我有2個自定義控件在wpf應用程序中彼此獨立。 但是,我有一些行爲需要在兩個類似的控件中進行復制。依賴屬性:如何設計
例如,當用戶在這兩個控件中的任何一個上拖放時,我需要或多或少相同的行爲來執行。
相同的行爲也包含需要在2個控件中共享的依賴項屬性。
這是可能的,如果是這樣,將如何設計呢?
因此,基本上,如何在控件之間共享依賴屬性,並且在控件彼此獨立時也共享一些行爲?
我有2個自定義控件在wpf應用程序中彼此獨立。 但是,我有一些行爲需要在兩個類似的控件中進行復制。依賴屬性:如何設計
例如,當用戶在這兩個控件中的任何一個上拖放時,我需要或多或少相同的行爲來執行。
相同的行爲也包含需要在2個控件中共享的依賴項屬性。
這是可能的,如果是這樣,將如何設計呢?
因此,基本上,如何在控件之間共享依賴屬性,並且在控件彼此獨立時也共享一些行爲?
那麼,你可以從你的自定義基本控件繼承這兩個控件,這兩個控件具有你需要的拖動邏輯。就像ListBox
和ComboBox
派生自ItemsControl
。這樣,他們共享相同的屬性和行爲。
如果這兩個控件不能從同一個控件繼承,那麼可以實現一個通用接口,就像ICommandSource
,這個接口由很多控件實現。
使用繼承 - 創建一個包含你需要在這兩個控件一樣,然後在他們的XAML使用像這樣的邏輯一個共同的基礎控制:
<local:BaseClassName
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:YourNamespaceName"
mc:Ignorable="d"
x:Class="ChildControlClassName"
x:Name="ChildControlName"
d:DesignWidth="640"
d:DesignHeight="480"
>
...control XAML
</local:BaseClassName>
或者使用附加DependencyProperties。在第三類聲明你的屬性 - 這裏是你如何處理DoubleClicking的一個例子(應該是相同的邏輯) - 使得重複使用更容易,而不緊密耦合兩個控件 - 特別是如果是Panel和其他ItemsControl:http://www.codeproject.com/Articles/42111/Selector-DoubleClick-Behaviour-calling-ViewModel-I.aspx