2
我有一個簡單的問題,在Silverlight 3.0中設置複選框的雙向數據綁定。它一定是一個無腦的,但可能我今天忘了我的大腦家園...Silverlight複選框雙向綁定不能按預期工作
我定義了一個Model類來表示我的'數據'。我實現了INotifyPropertyChanged接口以使UI能夠查看數據何時更改。
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,否則必須在複選框上單擊兩次以選中/取消選中。但是,如果解除執行它,則UI不會注意是否更改了基礎數據。
如果我從IsChecked綁定表達式中移除Mode = TwoWay位,那麼即使Model正在實現接口,UI也不會注意到基礎數據更改。
我該怎麼做才能:
- 必須在啓動
- 綁定到數據的複選框有複選框器isChecked變化修改基礎數據
- 有複選框檢測到基礎數據的變化和更新自己?
謝謝!有效。我告訴過你我今天忘了我的大腦:)) – 2009-09-01 11:14:25