我正在尝试将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
}
我过去做过这个,效果很好。