自定义Wpf Lookless控件...动态决定控件类型

时间:2009-10-12 06:37:41

标签: c# wpf inheritance

如何在运行时决定自定义无外观控件的类型。我必须在运行时决定控件类型(即文本框或组合)(实际上是在绑定某些Dependency属性时)。我该怎么办?我可以在运行时定义从哪里继承..?

2 个答案:

答案 0 :(得分:1)

您创建一个继承自FramewrokElement(或者Decorator,如果您想要快速实现并且不关心将类型用于它不应该做的事情)的控件,并创建所需的控件作为您控件的子控件依赖属性已设置。

答案 1 :(得分:0)

您可以使用设置控件的ControlTemplate属性的Trigger。

<Style TargetType={x:Type local:MyControl}>
  <Style.Triggers>
    <Trigger Property="MyProperty" Value="MyValue1">
      <Setter Property="ControlTemplate">
        <Setter.Value>
          <ControlTemplate TargetType={x:Type local:MyControl}>
            <!-- first template -->
          </ControlTemplate
        </Setter.Value>
      </Setter>
    </Trigger>
    <Trigger Property="MyProperty" Value="MyValue2">
      <Setter Property="ControlTemplate">
        <Setter.Value>
          <ControlTemplate TargetType={x:Type local:MyControl}>
            <!-- second template -->
          </ControlTemplate
        </Setter.Value>
      </Setter>
    </Trigger>
  </Style.Triggers