C# 自定义Wpf无外观控件…动态决定控件类型
如何在运行时决定自定义无外观控件的类型。我必须在运行时决定控件的类型(即,是textbox还是combo)(实际上是在绑定某些依赖项属性时)。我该如何做?我可以定义在运行时从何处继承吗?您可以使用设置控件的ControlTemplate属性的触发器C# 自定义Wpf无外观控件…动态决定控件类型,c#,wpf,inheritance,C#,Wpf,Inheritance,如何在运行时决定自定义无外观控件的类型。我必须在运行时决定控件的类型(即,是textbox还是combo)(实际上是在绑定某些依赖项属性时)。我该如何做?我可以定义在运行时从何处继承吗?您可以使用设置控件的ControlTemplate属性的触发器 <Style TargetType={x:Type local:MyControl}> <Style.Triggers> <Trigger Property="MyProperty" Value="MyVal
<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
可以使用设置控件的ControlTemplate属性的触发器
<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
您可以创建一个从FramewrokElement继承的控件(或者Decorator,如果您希望快速实现,并且不关心使用类型来完成它不应该做的事情),并在设置dependency属性时创建所需控件作为控件的子控件。您可以创建一个从FramewrokElement继承的控件(或Decorator,如果您希望快速实现,并且不关心使用类型来完成不应该执行的操作),并在设置dependency属性时创建所需控件作为控件的子控件