gpt4 book ai didi

c# - IsChecked 绑定(bind)在 ContextMenu 的 MenuItem 中不起作用

转载 作者:太空狗 更新时间:2023-10-29 23:15:16 24 4
gpt4 key购买 nike

我有一个 MVVM 应用程序并想添加一个上下文菜单。

我将 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!我不知道我在哪里做错了,希望有人能在这里帮助我。

最佳答案

要完成这项工作,您必须做一些事情。首先,您不能使用 ElementName 属性从 MenuItem 内部进行绑定(bind),因为目标元素通常不在您的范围内。

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

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

关于c# - IsChecked 绑定(bind)在 ContextMenu 的 MenuItem 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20522228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com