依赖属性:如何设计

时间:2010-08-02 11:28:55

标签: wpf c#-3.0 wpf-controls dependency-properties

我在wpf应用程序中有2个彼此独立的自定义控件。 但是,我有一些行为需要在两个类似的控件中复制。

例如,当用户拖放这两个控件中的任何一个时,我需要或多或少相同的行为来执行。

相同的行为还包括需要在两个控件之间共享的依赖项属性。

这是可能的,如果可以的话,如何设计呢?

基本上,当控件彼此独立时,如何跨控件共享依赖属性,以及共享某些行为?

3 个答案:

答案 0 :(得分:0)

好吧,您可以从自定义基本控件继承这两个控件,这些控件具有两个控件所需的拖动逻辑。就像ListBoxComboBox来自ItemsControl一样。这样,他们共享相同的属性和行为。

如果这两个控件无法从同一个控件继承,那么就可以像许多控件实现的ICommandSource一样实现一个通用接口。

答案 1 :(得分:0)

使用继承 - 创建一个公共基本控件,其中包含两个控件中需要相同的逻辑,然后在他们的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>

答案 2 :(得分:0)

或使用Attached DependencyProperties。在第三个类上声明你的属性 - 这里是你如何处理DoubleClicking(应该是相同的逻辑)的一个例子 - 让它更容易重用而不紧密耦合两个控件 - 特别是如果一个是Panel和其他一个ItemsControl:http://www.codeproject.com/Articles/42111/Selector-DoubleClick-Behaviour-calling-ViewModel-I.aspx