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