DataContext, Databinding jak odświeżyć WPF

Odpowiedz Nowy wątek
2020-05-04 13:08

Rejestracja: 1 rok temu

Ostatnio: 1 miesiąc temu

0

Jest ktoś w stanie powiedzieć jak można odświeżyć by po kliknięciu w przycisk wartość się zmieniała?

        Calculator calculator = new Calculator(); //firstInput w domyślnym konstruktorze = 0
        public MainWindow()
        {
            InitializeComponent();
            this.DataContext = calculator;
        }

        private void seven_Click(object sender, RoutedEventArgs e)
        {
            calculator.FirstInput = "7";
        }
 <TextBox Grid.Row="0" Grid.ColumnSpan="5" Margin="2" IsReadOnly="True" TextAlignment="Right" Foreground="White" FontSize="22" Background="{x:Null}" Text="{Binding FirstInput}"></TextBox>
edytowany 2x, ostatnio: PlotrekPL, 2020-05-04 13:13

Pozostało 580 znaków

2020-05-04 13:24

Rejestracja: 1 rok temu

Ostatnio: 1 godzina temu

0

Czym jest Calculator? Bo jakoś nie znam takiej kontrolki w wpf.

Pozostało 580 znaków

2020-05-04 13:26
Moderator

Rejestracja: 18 lat temu

Ostatnio: 2 godziny temu

Sama się zmieni, o ile twój Calculator implementuje INotifyPropertyChanged.

mógłbyś dać jakiś przykład? - PlotrekPL 2020-05-04 13:31

Pozostało 580 znaków

2020-05-04 14:33

Rejestracja: 5 lat temu

Ostatnio: 1 minuta temu

1

Witam,

Zobacz tutaj jak działa odświeżanie https://github.com/gajda-ltd/[...]aster/WpfMvvmBackgroundWorker i generalnie MVVM

Pozdrawiam,

mr-owl

Pozostało 580 znaków

2020-05-04 14:42

Rejestracja: 1 rok temu

Ostatnio: 1 miesiąc temu

0

Dobra dzięki panowie będę sobie to ogarniał już kiedyś miałem z tym styczność lecz niedokładnie i zapomniałem, myślałem też, że jest jakiś prostszy sposób bo kiedyś w WF i tam się tak robiło że się odświeżało Data.ResetBinding(false); i tyle

Pozostało 580 znaków

2020-05-04 15:49

Rejestracja: 1 rok temu

Ostatnio: 1 miesiąc temu

0

dodałem coś takiego i nadal mi nie zmienia po kliknieciu w przycisk

  public class Calculator : INotifyPropertyChanged
    {

        private string input;

        public Calculator()
        {
            input = "0";
        }

        public string Input
        {
            get
            {
                return input;
            }
            set
            {

                    input = value;
                    OnPropertyChanged(Input);

            }
        }

        private void OnPropertyChanged(string property)
        {
            if(PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(property));
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

    }
}

-------------------------------------------------

      Calculator calculator = new Calculator();
        public MainWindow()
        {
            InitializeComponent();
            this.DataContext = calculator;
        }

        private void seven_Click(object sender, RoutedEventArgs e)
        {
            calculator.Input = "7";

        }

--------------------------------------
Text="{Binding Path=Input, Mode=TwoWay}"

Pozostało 580 znaków

2020-05-04 15:54
Moderator

Rejestracja: 18 lat temu

Ostatnio: 2 godziny temu

2

Zmień OnPropertyChanged(Input); na OnPropertyChanged(nameof(Input)); - masz przekazywać nazwę właściwości, która się zmieniła, a przekazujesz jej wartość.

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0