如下,在UserControl中通过Tag传递不同的值,然后在Style中使用DataTrigger进行判断,
<UserControl Style="{DynamicResource UserStyle}" Tag="a"></UserControl> <UserControl Style="{DynamicResource UserStyle}" Tag="b"></UserControl> <UserControl Style="{DynamicResource UserStyle}" Tag="c"></UserControl>
在样式文件中:
<Style x:Key="UserStyle" TargetType="{x:Type UserControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type UserControl}">
<!--省略其他内容--> <ControlTemplate.Triggers> <DataTrigger Binding="{Binding Path=Tag,RelativeSource={RelativeSource Self}}" Value="a">
<!--设置代码-->
</DataTrigger>
<DataTrigger Binding="{Binding Path=Tag,RelativeSource={RelativeSource Self}}" Value="b">
<!--设置代码-->
</DataTrigger>
<DataTrigger Binding="{Binding Path=Tag,RelativeSource={RelativeSource Self}}" Value="c">
<!--设置代码-->
</DataTrigger> </ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
因为需要判断的Tag就是当前UserControl的属性,所以相对路径就直接使用Self即可,
但需要注意:DataTrigger的Binding中不能使用{TemplateBinding xxxxx}