#c# #wpf #data-binding #checkbox #binding
#c# #wpf #привязка данных #флажок #привязка
Вопрос:
Этот код находится в моем конструкторе класса:
CheckBox autoScrollCheckBox = new CheckBox();
autoScrollCheckBox.VerticalAlignment = VerticalAlignment.Center;
autoScrollCheckBox.Content = "Enable";
Binding autoScrollBinding = new Binding();
autoScrollBinding.Path = new PropertyPath("AutoScrollingIsEnabled");
autoScrollBinding.RelativeSource = new RelativeSource(RelativeSourceMode.Self);
autoScrollBinding.Mode = BindingMode.TwoWay;
autoScrollCheckBox.SetBinding(CheckBox.IsCheckedProperty, autoScrollBinding);
autoScrollBox.Content = autoScrollCheckBox;
Это в том же классе:
public bool AutoScrollingIsEnabled
{
get
{
return !autoScrollingIsPaused;
}
set
{
autoScrollingIsPaused = !value;
}
}
Но AutoScrollingIsEnabled никогда не вызывается. В чем проблема?
Комментарии:
1. Реализуете ли вы INotifyPropertyChanged?
2. Я обнаружил, что окно вывода чрезвычайно полезно для решения проблем с привязкой.
Ответ №1:
Вы должны устанавливать источник, а не относительный источник.
autoScrollBinding.Source = this;
Но если вы хотите, чтобы обновление из кода отражалось в вашем окне, вам нужно будет реализовать INotifyProertyChanged, как упоминал @evanb.