我有一个MVVM应用程序,想要添加一个ContextMenu。
我将ContextMenu添加到XAML中,然后像这样设置Items(这里只有一个项目,因为它不重要):
<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中的SelectionChanged上调用ContextMenu之前设置了这些。但是它不会显示MenuItem文本旁边的Checked符号,尽管SaveToDbOneChecked已设置为true!我不知道我做错了什么,希望有人能在这里帮助我。
答案 0 :(得分:5)
要完成这项工作,您需要做的一些事情。首先,您无法使用MenuItem
属性从ElementName
内部进行绑定,因为目标元素通常超出了您的范围。
如果我理解正确Model
是您的ViewModel
属性,在这种情况下,您所要做的就是将其设置为{{1}的元素DataContext
放置。
这会为ContextMenu
设置相同的DataContext
,您可以直接绑定到MenuItem
:
DataContext