У меня есть простая проблема, устанавливающая двустороннюю привязку данных флажка в Silverlight 3.0. Это должно быть легко, но, вероятно, я забыл свой мозг сегодня ...
Я определил класс Model для представления моих .. 'data'. Я реализовал интерфейс INotifyPropertyChanged, чтобы пользовательский интерфейс мог видеть, когда данные изменяются.
public class Model : INotifyPropertyChanged
{
private bool _value;
public bool Value
{
get { return this._value; }
set
{
if (this.PropertyChanged != null)
this.PropertyChanged(this, new PropertyChangedEventArgs("Value"));
this._value = value;
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
Затем я ставлю флажок и кнопку на «форму»:
<StackPanel Orientation="Horizontal">
<CheckBox x:Name="check" IsChecked="{Binding Value, Mode=TwoWay}" Content="SomeLabel"/>
<Button Click="Button_Click" Content="Test" />
</StackPanel>
Затем я предоставил данные в конструкторе:
public MainPage()
{
InitializeComponent();
this.DataContext = new Model() { Value = true };
}
Проблема заключается в том, что вам нужно дважды щелкнуть по флажку, чтобы включить / выключить его, если я не деинсталлирую INotifyPropertyChanged. Однако, если де-реализовать его, пользовательский интерфейс не заметит, если я изменю базовые данные.
Если я удаляю бит Mode = TwoWay из выражения привязки IsChecked, пользовательский интерфейс также не заметит изменения в базовых данных, даже если Модель реализует интерфейс.
Как мне сделать:
- Установите флажок, связанный с данными при запуске
- Установите флажок IsChecked, чтобы изменить базовые данные
- Установлен ли флажок для определения изменений основных данных и само обновление?