Как я могу программно привязать этот флажок?

#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.