public ReactiveProperty<bool> IsSelected { get; private set; }
にしたプロパティがXamlにTwoWayでBindできてしまった。
<CheckBox IsChecked="{Binding IsSelected.Value, Mode=TwoWay}" />
挙句にチェックボックスのon, offでsetterも普通に動く始末。
これ不味いんじゃないか?
というかSetterを取っ払っても動くんだけど?
public ReactiveProperty<bool> IsSelected { get; }
xamlにBindする時は基本的にSetterを付けているので問題にはならなそうだけど、挙動が怪しい。
.NET 4.5 をターゲットにした時のみ、private setter プロパティに TwoWay Binding できる謎 – CAT EARS
こんな記事を見つけた。
.NET4.5をターゲットにした時のみこういう挙動と書かれている。
でも私のターゲットはv4.7.2なのよね。
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
とりあえずは問題にならないのでスルーするけど、気になる。
コメント
当たり前では?
・プロパティのsetterはReactivePropertyのインスタンスそのものの書き換え可否を制御する(private setにするのはコンストラクタ以外のメソッドで初期化したいとき用)
・上書き不能ならReadOnlyReactivePropertyにする