什么是分解和简化复杂的WPF自定义控件的好方法?

时间:2010-03-30 10:27:17

标签: c# wpf xaml custom-controls

我正在寻找一种简化和组织复杂的WPF自定义控件的好方法。

我的第一个想法是将它分解为两个更简单的控件。为了便于解释,我将这些称为SimpleControl和AdvancedControl。

SimpleControl包含所有核心功能,并且非常可重用。

AdvancedControl依赖于SimpleControl并包含输入处理和额外的铃声和口哨声。 AdvancedControl比SimpleControl更不可重用,因为它包含额外的UI元素和特定于应用程序的输入处理。

AdvancedControl的可视化模板定义了对SimpleControl的依赖性。调用OnApplyTemplate时,它会缓存对嵌入式SimpleControl的引用。

这种方法的主要问题是SimpleControl I上可用的所有属性和方法也希望在AdvancedControl上可用。这意味着很多工作在AdvancedControl上实现相同的依赖项属性和方法,然后将它们转发到SimpleControl。这似乎不是特别优雅。

我还想过从SimpleControl继承AdvancedControl,但我认为在这种情况下我必须完全重新定义SimpleControl的可视化模板,而不是仅重用现有的。

有人能想出一种更好的方法来分解复杂的WPF自定义控件吗?

1 个答案:

答案 0 :(得分:1)

您可以继承样式:

<Style TargetType="{x:Type AdvancedControl}" BasedOn="{x:Type SimpleControl}" />