代码之家  ›  专栏  ›  技术社区  ›  Ashley Davis

什么是一个很好的方法来分解和简化一个复杂的wpf自定义控件?

  •  4
  • Ashley Davis  · 技术社区  · 14 年前

    我正在寻找一个很好的方法来简化和组织一个复杂的wpf自定义控件。

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

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

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

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

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

    我还考虑了从simplecontrol继承advancedcontrol,但在这种情况下,我必须完全重新定义simplecontrol的可视化模板,而不是重用现有的模板。

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

    1 回复  |  直到 14 年前
        1
  •  1
  •   CMerat    14 年前

    您可以继承样式:

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