私はMVVMアプリケーションを持っており、ContextMenuを追加したいと思います。IsChecked ContextMenuのMenuItemでバインディングが機能しない
私は、XAMLにのContextMenuを追加してから(それは問題ではないので、ここで一つだけのアイテム)は、このような項目を設定します。
<MenuItem Header="{x:Static Monitor:MonitorResources.R0206_SaveLatestValueToDatabase}"
IsCheckable="true"
IsChecked="{Binding ElementName=root, Path=Model.SaveToDbOneChecked}"
IsEnabled="{Binding ElementName=root, Path=Model.SaveToDbOneEnabled}">
SaveToDbOneCheckedとSaveToDbOneEnabledは以下のように実装されている私のモデルではプロパティですこの:
private bool mSaveToDbOneEnabled;
public bool SaveToDbOneChecked
{
get { return mSaveToDbOneChecked; }
set { mSaveToDbOneChecked = value; OnPropertyChanged("SaveToDbOneChecked"); }
}
私はのContextMenu前にこれらを設定
は、GridViewコントロールのContextMenuがであるにSelectionChangedに呼び出されます。しかしSaveToDbOneCheckedが設定されているが、それは次のMenuItemのテキストにチェック記号が表示されません。本当に!私はどこが間違っているのか分かりませんし、誰かが私をここで助けてくれることを願っています。
デバッグ中にアプリケーションを実行し、出力ウィンドウにバインドエラーをチェック。 –
ええ、かなりあります: 'ElementName = root'の参照でバインディングのソースを見つけることができません。 BindingExpression:Path = Model.SaveToDbOneChecked; DataItem = null;ターゲット要素は 'MenuItem'(Name = '')です。ターゲットプロパティが 'IsEnabled'(タイプ 'ブール') バインディングの問題は何ですか? o_O – Kazoooka