我需要显示大约 50 个标签,这些标签会根据视图模型布尔属性的值更改背景颜色。每个标签都与不同的视图模型布尔属性相关联。 如何创建一个样式来执行此操作,我可以与所有 50 个标签相关联,这样我就不必为每个标签声明一个样式。 有没有办法将单个样式和/或数据触发器应用于所有 50 个标签,因为每个标签都将绑定到不同的视图模型布尔属性。
我很清楚全局样式是如何工作的。我的具体问题:有没有办法将单个样式或数据触发器应用于所有 50 个标签,因为每个标签都将绑定到不同的视图模型布尔属性。
不。除非以编程方式创建DataTrigger
,否则无法动态更改该绑定。
恐怕没有办法动态地替换DataTrigger
的绑定路径并在 XAML 中重用样式或模板的其余部分。
我认为您可以尝试为标签创建自定义模板并添加控件模板触发器以更改标签的背景。
<Style x:Key="test" TargetType="Label">
<Setter Property="BorderThickness" Value="1"></Setter>
<Setter Property="BorderBrush" Value="Black"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBlock Text="test"></TextBlock>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding ColorValue}" Value="12">
<Setter Property="Background" Value="Aquamarine"></Setter>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
上面的代码只是为了显示用法,它不是确切的答案。