【问题标题】:CanOnMenuItemClick not binded corretly in generic eventhandlerOnMenuItemClick 能否在通用事件处理程序中正确绑定
【发布时间】:2014-08-28 20:17:39
【问题描述】:

为了对 topmenuitems 实现进行抽象,我创建了一个通用方法来通过 IoC 处理操作。

<MenuItem Header="_Open" cal:Message.Attach="[Event Click] = [Action OnMenuItemClick('OpenFileCommand')]" />

这适用于 OnMenuItemClick 事件,并且初始调用 CanOnMenuItemClick 有效。 此后,当调用 CanOnMenuItemClick 时,不会更新 CanOnMenuItemClick。 UIElement 似乎没有绑定到 CanOnMenuItemClick 方法。

public void OnMenuItemClick(string cmd)
{            
}

public bool CanOnMenuItemClick(string cmd)    
{            
    ICommand command = _commands.SingleOrDefault(x => x.GetType().Name == cmd);
    return command != null && command.CanExecute(null);
}

我做错了什么?

【问题讨论】:

    标签: wpf caliburn.micro


    【解决方案1】:

    我可能搞错了(我不在我的机器附近),但通常Caliburn.Micro 中的约定是指定Can&lt;MethodName&gt; 形式的保护属性,而不是方法。

    所以你可能想要添加一个属性。

    public bool CanOnMenuItemClick
    {
        // Your code to determine if `OnMenuItemClick` can be executed.
    }
    

    从示例中我不能完全确定您使用命令执行的操作,因此这可能不是您问题的全部解决方案。

    您可能还需要在方法中添加对NotifyOfPropertyChange(() =&gt; CanOnMenuItemClick); 的调用,以在您预计此方法的执行状态发生变化时提醒 UI。

    【讨论】:

      猜你喜欢
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-05
      • 2010-10-22
      相关资源
      最近更新 更多