我可以为 50 个根据视图模型布尔值更改背景颜色的 WPF 标签创建单个样式或数据触发器吗
Can I create a single style or data trigger for 50 WPF Labels that changes background color depending on view model boolean values
我需要显示大约 50 个标签,这些标签会根据视图模型布尔值 属性 更改背景颜色。每个 Label 都与不同的视图模型布尔值 属性 相关联。我如何创建一个单一的样式来执行此操作,我可以将它与所有 50 个标签相关联,这样我就不必为每个标签都声明一个样式。有没有一种方法可以将单一样式 and/or 数据触发器应用于所有 50 个标签,因为每个标签都将绑定到不同的视图模型布尔值 属性.
我想你可以尝试为标签创建自定义模板并添加 ControlTemplate 触发器来更改标签的背景。
<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>
以上代码只是展示用法,并非准确答案。
I am well aware of how global styles work. My SPECIFIC question: is there a way I can apply a SINGLE style or data trigger to ALL 50 labels, since each label will be bound to a different view model boolean property.
没有。您不能动态更改 DataTrigger
的绑定,除非您以编程方式创建它。
恐怕没有办法动态地替换 DataTrigger
的绑定路径并重新使用 XAML 中的其余样式或模板。
我需要显示大约 50 个标签,这些标签会根据视图模型布尔值 属性 更改背景颜色。每个 Label 都与不同的视图模型布尔值 属性 相关联。我如何创建一个单一的样式来执行此操作,我可以将它与所有 50 个标签相关联,这样我就不必为每个标签都声明一个样式。有没有一种方法可以将单一样式 and/or 数据触发器应用于所有 50 个标签,因为每个标签都将绑定到不同的视图模型布尔值 属性.
我想你可以尝试为标签创建自定义模板并添加 ControlTemplate 触发器来更改标签的背景。
<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>
以上代码只是展示用法,并非准确答案。
I am well aware of how global styles work. My SPECIFIC question: is there a way I can apply a SINGLE style or data trigger to ALL 50 labels, since each label will be bound to a different view model boolean property.
没有。您不能动态更改 DataTrigger
的绑定,除非您以编程方式创建它。
恐怕没有办法动态地替换 DataTrigger
的绑定路径并重新使用 XAML 中的其余样式或模板。