我只是想加快WPF,並想創建一個可重用的WPF控件。用戶控制庫和自定義控制庫之間有什麼區別?
當我看到在Visual Studio中創建項目的選項時,我看到「WPF用戶控制庫」和「WPF自定義控件庫」。我不清楚他們之間有什麼不同,我的Google搜索沒有得到任何體面的解釋。
我想了解它們之間的差異,並理想地看一些什麼時候使用它們的例子。
我只是想加快WPF,並想創建一個可重用的WPF控件。用戶控制庫和自定義控制庫之間有什麼區別?
當我看到在Visual Studio中創建項目的選項時,我看到「WPF用戶控制庫」和「WPF自定義控件庫」。我不清楚他們之間有什麼不同,我的Google搜索沒有得到任何體面的解釋。
我想了解它們之間的差異,並理想地看一些什麼時候使用它們的例子。
實際上,自定義控件是您在代碼級別實現的,您可以將XAML用於用戶控件。自定義控件擴展了其中一個WPF控件基類,並通過代碼提供了附加功能,因此所有添加的邏輯和表示都必須在代碼中實現。
用戶控件在技術上是一個普通的內容控件,您可以在代碼中的某些部分進行擴展,但通常通過將其他控件放入其中進行擴展。正如Kent提到的,UserControl是其他控件的集合。這大大限制了您可以對用戶控件執行的操作。使用起來更容易,但比完整的自定義控件更有限。
這些控件與運行時的角度有很小的差異。在構建應用程序並將UserControl放入其中時,控件樹將在其中包含一個具體的UserControl模板。所以如果我們考慮一個專門按鈕的蹩腳的例子。如果您使用的是用戶控件,您可以在<UserControl>
元素內添加一個按鈕。使用自定義控件時,您最有可能從按鈕派生控件本身。差異將在邏輯樹中可見。
雖然自定義控件將提供類似
的用戶控件將給予
那麼到底該用戶控件僅僅是一個正常的ContentControl中,你可以擴展位以及您可以預先設定內容。自定義控件以易於實現的價格提供了更大的靈活性,因爲您必須執行代碼中的所有邏輯和交互操作,而不是從XAML中獲益。
儘管如此,我認爲在Visual Studio模板中沒有太大的區別。最有可能的Visual Studio自定義控件只是創建一個空的自定義控件的項目,而用戶控件項目是一個空用戶控件的項目。您可以稍後在項目中添加任何種類的項目。
更新
而且我對時使用自定義的控制和用戶控制是認爲,如果你能得到的東西與用戶控制和邏輯樹中的額外的控制元件不打擾你做,使用用戶控件,因爲它們更容易創建和維護。僅當您有理由不使用用戶控件時才使用自定義控件。
甲Control
表示一些行爲是可更換皮膚(模板化),而一個UserControl
一般是Control
秒的較高級別的聚合是特定於應用程序。
更多信息可用here。
不要忘記嵌套內容或更改控件的模板作爲選項。您可以使用這種方式對控件進行非常戲劇性的更改,而無需編寫自定義控件。 – MichaC 2009-04-30 16:41:46
MichaC說什麼。 WPF最好的部分是現有控件的模板化可以產生巨大的影響。您應該很少需要自定義控件。這與WinForms不同,即使對控件進行細微更改也需要新的派生控件。 – 2009-04-30 16:47:35
仍然有用。有另一個金徽章。 – ouflak 2016-03-03 10:56:58