シンプルなwpfチェックボックスがあります
<CheckBox Name="layerCheckBox" IsChecked="{Binding Path=IsSelected, Mode=TwoWay}" Grid.Column="0" />
カスタム Layer クラスの BindingList にバインドします。
public BindingList<Layer> Layer
{
get { return _layer; }
set { _layer = value; }
}
Layer クラスにはプロパティ IsSelected があります。それが私のチェックボックスで使用するものです。ご覧のとおり、プロパティの読み取りと書き込みのための出力を追加しました
public bool IsSelected
{
get
{
System.Diagnostics.Debug.WriteLine("get"+_isSelected+this.GetHashCode()+
"thread"+Thread.CurrentThread.ManagedThreadId);
return _isSelected;
}
set
{
System.Diagnostics.Debug.WriteLine("set" + value + this.GetHashCode()
+ "thread" + Thread.CurrentThread.ManagedThreadId);
PropertyChanged.ChangeAndNotify(ref _isSelected, value, () => IsSelected);
}
}
奇妙なのは出力です。まず、チェックボックスをオンにして、プロパティを true に設定します。その後、プロパティを読んだところ、false と表示されましたか? どうしたの?同じオブジェクト (ハッシュコード) と同じスレッドです...わかりません...そして、次の 2 回の読み取りでは、更新すると思いますが、これもまた真実です。最良の部分は、ボックスのチェックを外すとtrueが返されることです。
プロパティ内のコードは hereプロパティ通知からです
出力
setTrue53182860thread1
getFalse53182860thread1
getTrue53182860thread1
getTrue53182860thread1