2013-10-18 98 views
2

我試圖一起使用WPF NotifyIconCaliburn Micro。我的最終目標是雙擊系統托盤中的圖標,將窗口從最小化狀態恢復。隨時告訴我,如果我試圖去解決這個問題是完全錯誤的。用Caliburn Micro雙擊WPFNotifyIcon

我可以看到TaskbarIcon上有一個DoubleClickCommand(我沒有看到任何DoubleClick事件,如果它可用,我真的很樂意使用它)。通常在使用Caliburn Micro時使用命令時,我會簡單地創建一個Restore()方法和一個CanRestore屬性,該屬性將自動由名爲Restore的按鈕調用。我將如何去鉤住事物,這樣Restore()被稱爲雙擊系統托盤中的圖標?

編輯 - 根據glen的建議,我現在已經添加了一個附加事件,但雙擊系統托盤中的圖標仍似乎什麼都不做。下面的代碼。

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; } 
} 

回答

5

嘗試以下操作:

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

注意,事件名稱爲TrayMouseDoubleClick,我發現通過查看控制的源代碼,專門命名TaskBarIcon.Declarations.cs文件。

此文件包含爲TaskBarIcon類定義的所有依賴項屬性定義和路由事件。

+0

完美,謝謝! –

+0

@PaulMcLean歡迎您,很高興我能提供幫助。 –

+1

+1學習新事物! – gleng

1

如何創建一個附加事件?

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

然後在您的視圖模型你必須:

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

我已經在過去這樣做,那很好。

+0

這是我最初試過的東西之一,但也許我做錯了什麼呢?我用我試過的代碼編輯了我的問題。 –