我已经对此进行了一些研究,但未能找出如何重用样式触发器。在wpf中重用样式触发器
我在标签上设置了样式触发器,我使用数据触发器来设置内容。我在同一视图中也有不同视图的多个标签。数据绑定是相同的类型,除了它具有相同数据上下文的不同属性。
考虑以下2个不同的标签,我需要显示2人的表现 - PersonA和PersonB。两个标签显示的值将基于选定的演出格式。
<Label Grid.Row="5" Grid.Column="9"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center">
<Label.Style>
<Style BasedOn="{StaticResource SomeGlobalStaticStyle}" TargetType="Label">
<Style.Triggers>
<DataTrigger Binding="{Binding PersonModel.PerformanceFormat}" Value="Fractional">
<Setter Property="Content" Value="{Binding DataModel.PersonA.Performance.Value.Fractional}" />
</DataTrigger>
<DataTrigger Binding="{Binding PersonModel.PerformanceFormat}" Value="Decimal">
<Setter Property="Content" Value="{Binding DataModel.PersonA.Performance.Value.Decimal}" />
</DataTrigger>
<DataTrigger Binding="{Binding PersonModel.PerformanceFormat}" Value="US">
<Setter Property="Content" Value="{DataModel.PersonA.Performance.Value.US}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Label.Style>
<Label Grid.Row="6" Grid.Column="9"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center">
<Label.Style>
<Style BasedOn="{StaticResource SomeGlobalStaticStyle}" TargetType="Label">
<Style.Triggers>
<DataTrigger Binding="{Binding PersonModel.PerformanceFormat}" Value="Fractional">
<Setter Property="Content" Value="{Binding DataModel.PersonB.Performance.Value.Fractional}" />
</DataTrigger>
<DataTrigger Binding="{Binding PersonModel.PerformanceFormat}" Value="Decimal">
<Setter Property="Content" Value="{Binding DataModel.PersonB.Performance.Value.Decimal}" />
</DataTrigger>
<DataTrigger Binding="{Binding PersonModel.PerformanceFormat}" Value="US">
<Setter Property="Content" Value="{DataModel.PersonB.Performance.Value.US}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Label.Style>
如果你看到的,唯一的区别是第一个触发需要的人物和第二触发需要PersonB。我有10个这样的标签传播在相同和多个视图。是否有办法在资源中定义此触发器,并将每个标签所需的任何数据进行绑定。
期待解决方案。
问候,
Abdyax
可能最好使用明确的样式而不是隐式的,因为可能有很多不相关的标签,并且你不想覆盖它们的内容。否则,一个完美的解决方案。 –
工程像魅力。谢谢! – Abdyax