Double click WPFNotifyIcon with Caliburn Micro



我正在尝试将WPF NotifyIcon和Caliburn Micro一起使用。我的最终目标是双击系统托盘中的图标以将窗口从最小化状态恢复。请随时告诉我,我试图这样做的方式是否完全错误。

我可以看到TaskbarIcon上有一个DoubleClickCommand(我没有看到任何 DoubleClick 事件,如果可用,我实际上很乐意使用它)。通常,在使用Caliburn Micro时使用命令时,我只会创建一个Restore()方法和一个CanRestore属性,该属性将由名为Restore的按钮自动调用。我将如何连接事物,以便在双击系统托盘中的图标时调用Restore()

编辑 - 根据 gleng 的建议,我现在已经添加了一个附加事件,但双击系统托盘中的图标似乎仍然没有任何作用。下面的代码。

XAML -

<tb:TaskbarIcon cal:Message.Attach="[Event DoubleClick] = [Action Restore]" />

虚拟机 -

public void Restore()
{
    MessageBox.Show("moo"); // breakpoint on this line is never hit
}
public bool CanRestore
{
    get { return true; }
}

尝试以下操作:

<TaskbarIcon cal:Message.Attach="[Event TrayMouseDoubleClick] = [Action DoubleClickFunc]"/>

请注意,事件名称是TrayMouseDoubleClick我通过查看控件的源代码找到的,特别是名为 TaskBarIcon.Declarations.cs 的文件。

此文件包含为 TaskBarIcon 类定义的所有依赖项属性定义和路由事件。

如何创建一个附加事件?

<TaskbarIcon cal:Message.Attach="[Event DoubleClick] = [Action DoubleClickFunc]"/>

然后在视图模型中,你将拥有:

public void DoubleClickFunc()
{
   // Your custom logic here
}

我过去做过这个,效果很好。

最新更新