如下,在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}