c# - 将 ContextMenu 项的 "IsEnabled"绑定(bind)到按钮

标签 c# wpf

是否可以将按钮的 IsEnabled 属性绑定(bind)到由 NotifyIcon 表示的上下文菜单项?

当我按下菜单项时,它会启动一个禁用我的 btnSave 的方法。在那种情况下,我也想“关闭” MenuItem。我尝试过这种方式,但它不起作用:

<Window.Resources>
    <ContextMenu x:Key="NotifierContextMenu" Placement="MousePoint">
        <MenuItem Header="Start" Click="start_timer" IsEnabled="{Binding ElementName=btnSave, Path=IsEnabled}"/>
    </ContextMenu>
</Window.Resources>

最佳答案

我相信您的问题源于可视化树中不存在的 ContextMenu,因此 ElementName 绑定(bind)将失败,除非您采取一些额外的步骤来更正名称范围,或将 DataContext 解析为可视化树。

大多数技术都在这个答案中相当全面地涵盖了:ElementName Binding from MenuItem in ContextMenu .

我过去曾成功地通过引用绑定(bind)到命名元素,在您的情况下,它看起来像这样:

    <MenuItem Header="Start" 
              IsEnabled="{Binding IsEnabled, Source={x:Reference btnSave}}"
              Click="btnSave_Click"/>

关于c# - 将 ContextMenu 项的 "IsEnabled"绑定(bind)到按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30013886/

相关文章:

c# - Dispatcher.BeginInvoke 和 Task.Factory.StartNew 有什么区别

wpf - 这是糟糕的设计吗? MVVM 模式在单个类上有许多命令

c# - 调整 DataGridView 宽度以适应列

c# - 有没有办法在特定时间显示表单

wpf - 如何删除样式?

c# - VS2013 : Memory profiler doesn't show anything on a specific project

c# - WCF 客户端错误 : “The address of the security token issuer is not specified”

c# - 在编辑时在 C# 中读取和写入打开的 excel 文件

c# - 试图让 View 记住 ClientID

c# - 使用 sshnet 库的 SFTP 上传 - 处理连接问题