1
我想創建一個包含Button和ContentPresenter的自定義wpf控件。由於WPF控件應該是無形的,我創建了一個應該包含我的控件行爲的類,並將控件的默認樣式放在generic.xaml文件中。到現在爲止還挺好。wpf自定義控件事件
但是,如何讓我的按鈕提出一個事件(路由事件?)並在我的控件的類中處理?我發現我可以在generic.xaml的ResourceDictionary文件後面添加代碼,並在其中放置我的事件處理程序,但是這會將我的控件的行爲與其模板關聯起來,因此不可取。我見過的另一個想法(但尚未嘗試)是使用TemplatePart機制來定位模板中的一些關鍵控件並訂閱代碼中的事件。但是這對我來說似乎不夠靈活,因爲可能發生的情況是,我的控件的用戶會想要用設計我的控件時沒有任何事件的控件替換按鈕。
那麼當按鈕被點擊並在控件的代碼文件中訂閱它時,如何在XAML中引發事件?
這種方法假定我知道,控制模板有一個「按鈕」命名爲「myButton的」和我想訂閱「點擊」事件。我不想做出這樣的假設。用戶應該能夠將其更改爲引發「MouseEnter」事件的名爲「myLabel」的「Label」。 –
在這種情況下,請確保該模板觸發一個Command並處理執行Execute方法。使用混合行爲可以讓任何事件執行命令。 –
我嘗試閱讀有關命令,但我仍然不知道如何在這種情況下使用它們。我是否需要創建自己的實現ICommand接口的對象,還是可以重用通用命令?我如何在XAML中引用它?我見過一些聲明該命令必須是靜態類中的公共靜態屬性的示例 - 那麼如何將執行操作的對象的實例傳遞給該命令?我需要使用CommandTarget嗎? –