Двусторонняя привязка wpf и обновление из кода программной части

Я определил ToggleButton следующим образом в XAML:

<ToggleButton IsChecked="{Binding DateFilter, ElementName=myUserControl, Mode=TwoWay}"/>

и DateFilter определяется следующим образом:

public Boolean DateFilter { get; set; }

Когда я нажимаю кнопку-переключатель, «DateFilter» обновляется соответственно. НО, если я изменю DateFilter в коде, ToggleButton не обновится!
Как мне это сделать?


person Fred    schedule 21.09.2010    source источник
comment
Вы DataFilter поднимаете событие из INotifyPropertyChanged?   -  person Lukasz Madon    schedule 21.09.2010


Ответы (2)


public MyClass : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged = delegate {};

    private Boolean _dateFilter;

    public Boolean DateFilter
    {
        get { return _dateFilter; }
        set
        {
            _dateFilter = value;
            PropertyChanged(this, new PropertyChangedEventArgs("DateFilter");
        }
    }
}

В основном делайте этот вызов PropertyChanged всякий раз, когда вы меняете _dateFilter или просто используете установщик, и вы будете отсортированы. Установка для обработчика событий пустого делегата позволяет избежать проверок на нуль.

person Lunivore    schedule 21.09.2010
comment
Поместите его в шаблон Resharper — вот один из них: koder.wordpress.com/2010. /03/25/resharper-inotifypropertychanged - person Lunivore; 22.09.2010

Вам нужно добавить наследование от INotifyPropertyChanged для myUserControl и отправить в событие установки DateFilter PropertyChanged с именем свойства «DateFilter».

person Rover    schedule 21.09.2010