IsChecked绑定在ContextMenu的MenuItem中不起作用

浮点数

我有一个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符号!我不知道我在哪里做错了,希望有人可以在这里为我提供帮助。

诺维奇

为了使这项工作必须要做的几件事。首先,由于目标元素通常不在您的范围之内,因此您无法从MenuItemusingElementName属性内部进行绑定

如果我正确理解,则这Model是您的ViewModel属性,在这种情况下,您要做的就是将其设置为放置DataContext元素的ContextMenu这将为您设置相同DataContext的名称MenuItem,您可以直接绑定到DataContext

IsChecked="{Binding SaveToDbOneChecked, Mode=TwoWay}"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章