我正在尝试一起使用WPF NotifyIcon和Caliburn Micro。我的最终目标是双击系统托盘中的图标,将窗口从最小化状态恢复。请随意告诉我,我试图解决它的方式是完全错误的。
我可以看到DoubleClickCommand
上有一个TaskbarIcon
(我没有看到任何DoubleClick事件,如果有的话,我会很乐意使用它)。通常在使用Caliburn Micro时使用命令时,我只需创建一个Restore()
方法和一个CanRestore
属性,该属性将由名为Restore的按钮自动调用。我如何进行连接,以便在双击系统托盘中的图标时调用Restore()
?
编辑 - 根据gleng的建议,我现在添加了一个附加事件,但是双击系统托盘中的图标似乎仍然无效。代码如下。
xaml -
<tb:TaskbarIcon cal:Message.Attach="[Event DoubleClick] = [Action Restore]" />
VM -
public void Restore()
{
MessageBox.Show("moo"); // breakpoint on this line is never hit
}
public bool CanRestore
{
get { return true; }
}
答案 0 :(得分:5)
尝试以下方法:
<TaskbarIcon cal:Message.Attach="[Event TrayMouseDoubleClick] = [Action DoubleClickFunc]"/>
请注意,我通过查看控件的源代码,特别是名为TrayMouseDoubleClick
的文件找到了事件名称TaskBarIcon.Declarations.cs
。
此文件包含为TaskBarIcon
类定义的所有依赖项属性定义和路由事件。
答案 1 :(得分:1)
如何创建附加活动?
<TaskbarIcon cal:Message.Attach="[Event DoubleClick] = [Action DoubleClickFunc]"/>
然后在您的视图模型中,您将拥有:
public void DoubleClickFunc()
{
// Your custom logic here
}
我过去做过这个,效果很好。