DataContext, Databinding jak odświeżyć WPF

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>

0

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

3

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

1

Witam,

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

Pozdrawiam,

mr-owl

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

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}"
2

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

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