我正在寻找一种简化和组织复杂的WPF自定义控件的好方法。
我的第一个想法是将它分解为两个更简单的控件。为了便于解释,我将这些称为SimpleControl和AdvancedControl。
SimpleControl包含所有核心功能,并且非常可重用。
AdvancedControl依赖于SimpleControl并包含输入处理和额外的铃声和口哨声。 AdvancedControl比SimpleControl更不可重用,因为它包含额外的UI元素和特定于应用程序的输入处理。
AdvancedControl的可视化模板定义了对SimpleControl的依赖性。调用OnApplyTemplate时,它会缓存对嵌入式SimpleControl的引用。
这种方法的主要问题是SimpleControl I上可用的所有属性和方法也希望在AdvancedControl上可用。这意味着很多工作在AdvancedControl上实现相同的依赖项属性和方法,然后将它们转发到SimpleControl。这似乎不是特别优雅。
我还想过从SimpleControl继承AdvancedControl,但我认为在这种情况下我必须完全重新定义SimpleControl的可视化模板,而不是仅重用现有的。
有人能想出一种更好的方法来分解复杂的WPF自定义控件吗?
答案 0 :(得分:1)
您可以继承样式:
<Style TargetType="{x:Type AdvancedControl}" BasedOn="{x:Type SimpleControl}" />