我有一个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之前进行了设置。但是,即使SaveToDbOneChecked设置为true,它也不会在MenuItem的文本旁边显示Checked符号!我不知道我在哪里做错了,希望有人可以在这里为我提供帮助。
为了使这项工作必须要做的几件事。首先,由于目标元素通常不在您的范围之内,因此您无法从MenuItem
usingElementName
属性内部进行绑定。
如果我正确理解,则这Model
是您的ViewModel
属性,在这种情况下,您要做的就是将其设置为放置DataContext
元素的ContextMenu
。这将为您设置相同DataContext
的名称MenuItem
,您可以直接绑定到DataContext
:
IsChecked="{Binding SaveToDbOneChecked, Mode=TwoWay}"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句