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を実装解除しない限り、チェックボックスを2回クリックしてチェック/チェックを外さなければなりません。しかし、それを実装解除すると、UIは基になるデータを変更するかどうか通知しません。
IsCheckedバインディング式からMode = TwoWayビットを削除すると、モデルがインターフェイスを実装している場合でも、UIは基になるデータの変更を認識しません。私が行うことができますどのように
:
- が起動
- でデータにバインドされたチェックボックスは、基礎となるデータ
- を変更するには、チェックボックスにisChecked変化があり、チェックボックスは、基礎となるデータの変化を検出しており、自分自身を更新する?
感謝!出来た。私は今日私の脳の家を忘れてしまったと言った) –