私の同僚は、Wpfでのバインディングでちょっとした奇妙な動作に遭遇しました。WPF MVVM - チェックボックスを無効にすると、IsEnabledにバインドされたプロパティのセッターが機能する必要があります。
- 表示無効]チェックボックスを
- バインド(ユーザーがそれをクリックすることで、それを設定することはできません)このチェックボックスは、いくつかのブール値ににisChecked:すべてここの
まず、彼が達成したいものです一部のフィルタがアクティブであるかどうかをユーザに通知します。コードで
プロパティは次のようになります。
C#
public bool IsFooBarFilterEnabled
{
get
{
return _isFoo && _isBar;
}
}
XAML
<CheckBox IsChecked="{Binding IsFooBarFilterEnabled}" IsEnabled="False" />
彼は_isFoo
または_isBar
を設定whenerそれから彼はを呼び出します
これまでのところすべてがうまく見えましたが、コードは機能しません。
私たちは、このような空のセッター追加する必要がありました:私の質問がどこにあるのです
public bool IsFooBarFilterEnabled
{
get
{
return _isFoo && _isBar;
}
set{}// that's not what i would call beautifull code
}
を。チェックボックスを無効にすると、IsFooBarFilterEnabled上のセッターは決して呼び出されません。なぜクラッシュを避けるために作成する必要がありますか?私たちの間違いは何ですか?
私が正しくあなたを理解していれば、あなたは例えば、 '<チェックボックスにisChecked = "{IsFooBarFilterEnabled、モードをバインド=一方向}" でIsEnabledは= "false" に結合一つの方法を使用する必要があります/>あなたがセッターを必要としないように –