2011-12-13 165 views
0

我正在製作一個自定義控件,它是一個可展開/可摺疊面板,然後我可以使用其他控件進行填充。我不確定如何將expand/collapse命令掛鉤到按鈕。WPF命令和自定義控件

我用這個來獲取面板聽:

CommandManager.RegisterClassInputBinding(GetType(Button), New InputBinding(ToggleBtnCommand, New MouseGesture(MouseAction.LeftClick))) 
    CommandManager.RegisterClassCommandBinding(GetType(Button), New CommandBinding(ToggleBtnCommand, AddressOf btnToggleState)) 

這個工作,只要我只用每個窗口一個面板。如果我使用更多面板,當按下按鈕時,所有面板都會展開或摺疊。我怎樣才能讓控件明白只有包含按鈕的按鈕(「命令觸發器」)才能聽命令?

+1

在你的ToggleBtnCommand中(它真的由by,但我個人從名稱中刪除Btn,因爲命令是UI不可知的) - 執行處理程序,您將ExecutedRoutedEventArgs作爲secong參數,您可以說OriginalSource是否是「本地」命令。 – 2011-12-13 13:09:22

+1

我想嘗試的另一件事是劫持標準Expender控件,你可以調整它到一個幾乎無法辨認的狀態:) – 2011-12-13 13:12:13

+1

@Dmirty:好點,但你應該發佈爲「答案」,而不是「評論」 – David

回答

0

在你ToggleBtnCommand(它是真正靠了靠,但我個人從名稱中刪除BTN的命令是UI不可知) - 執行處理程序你必須ExecutedRoutedEventArgs作爲secong參數,通過比較其來源& OriginalSource可以說是否是「本地」命令。

[我將此評論複製到答案中,以便我可以將問題標記爲已回答 - 這正在搞亂我的接受率。 :)]