2011-05-17 76 views
2

我正在C#中開發WPF應用程序,並且正在考慮在各種窗口中實現自定義UI元素。在WPF中創建可重用的界面元素

我想要一個最小化的托盤(僅約4px可見),在點擊托盤旁邊的圖標後展開。擴展版本將顯示所有控件,並在再次單擊該圖標時最小化。我創建了一個快速的HTML concept來澄清事情。

我知道我可以在我的應用程序中放置一個堆棧面板和按鈕,並且在單擊按鈕時將它們向上移動,但是之後我需要複製很多代碼。儘管我對C#有豐富的經驗,但對於WPF界面開發/模板我還是比較陌生,但我確信必須有一種方法,以便我可以在應用程序中使用該UI元素,而無需複製/在我的表單類文件中粘貼大量代碼行。

我希望有人能幫助我,或者至少讓我指向正確的方向。

回答

2

有三種自定義元素的方法。

如果你只需要視覺的修改,你可以使用風格改變.NET默認控件的外觀。您甚至可以覆蓋/擴展默認模板。

如果你想在一個控制的自定義邏輯,你可以創建一個自定義控件。該框架帶來了許多「基元」。示例是ContentControlHeaderedContentControl。假設你想建立一個自定義擴展的控制,你可以從HeaderedContentControl它爲您提供了頁眉和內容屬性繼承您的自定義控制你不得不自己實現的觸發邏輯。 如果您想要構建可在整個應用程序中使用的基本功能,CustomControls是一個不錯的選擇。根據用例,它們也可以是主題/樣式(參見1)。

如果您想將不同的控件組合成一個控件,您可以創建一個UserControl。用戶控件由XAML組成。大多數頂級控件是由視圖模型驅動的用戶控件。

您的情況可以使用PopupToggleButtonExpander構建。

的決定取決於所期望的行爲。如果您希望打開的面板在內容下移後需要擴展器。如果你想要一個下拉式的功能,你需要彈出。

如果您使用彈出窗口,只需將ToggleButton的IsPopupOpen Property屬性綁定到IsChecked,並將PopupStaysOpen = false設置爲將按鈕連接到彈出窗口。

如果您使用擴展器控件,則應該創建一種可應用於應用程序中所有平等擴展器的樣式,以最大限度地減少每個視圖中所需的XAML。

2

如何使用擴展控件?

0

有一個稱爲擴展器的控件非常適合這個。您必須將其設置爲您想要的樣式,但它具有您想要的內置功能。