Ваш XAML выглядит хорошо.Просто чтобы прояснить, вы не привязали _number
к TextBlock._number
является закрытой переменной и недоступна для пользовательского интерфейса.Вы привязали данные к общедоступному свойству Number
к TextBlock, как и должно быть.
Как MarcE описывал в своем посте, проблема возникает в вашей ViewModel.Установщик вашего свойства Number
нуждается в вызове метода PropertyChanged, который необходимо добавить;и ваши методы увеличения и уменьшения должны модифицировать свойство Number
напрямую, а не его вспомогательную переменную.Когда вы просто изменяете вспомогательную переменную, установщик вашего свойства никогда не вызывается, и поэтому пользовательский интерфейс никогда не обновляется.
Ниже показаны необходимые изменения кода:
private int _number = 0;
public int Number
{
get { return _number; }
set
{
if (_number != value)
{
_number = value;
//After the setter updates the backing variable, this Updates the UI.
NotifyPropertyChanged("Number");
}
}
}
public void increase(object sender, RoutedEventArgs e)
{
Number += 1;
}
public void decrease(object sender, RoutedEventArgs e)
{
Number -= 1;
}
Добавьте этокод для работы функции NotifyPropetyChanged
.
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
Вы прошли большую часть пути.