我有一个listview绑定到一个Observable集合,listview有属性,其中大多数将使用相同的触发器。是否可以在资源部分定义一次触发器,并且只在属性需要时引用它?
到目前为止,我得出了这个结论:
<Style TargetType="TextBlock" x:Key="Pstyle">
<Setter Property="Text" Value="Testing"/>
<Style.Triggers>
<DataTrigger Binding="{Binding P1}" Value="Testing">
<Setter Property="Foreground" Value="DarkGreen"/>
<Setter Property="FontWeight" Value="Bold"/>
</DataTrigger>
</Style.Triggers>
</Style>
在listview成员中,我只是将定义的样式应用于属性P1
Style="{DynamicResource Pstyle}"
但是如何应用相同的定义触发器比如P2 P3 P4…
既然你想把你的触发逻辑放在TextBlock
的内容上,在我看来,你应该使用Trigger
针对Text
属性,而不是DataTrigger
。
查看下面的示例代码:
<Style TargetType="TextBlock" x:Key="Pstyle">
<Style.Triggers>
<Trigger Property="Text" Value="Testing">
<Setter Property="Foreground" Value="DarkGreen"/>
<Setter Property="FontWeight" Value="Bold"/>
</Trigger>
</Style.Triggers>
</Style>
<TextBlock Name="MyTextBlock1" Text="MyTextBlock1Text" Style="{StaticResource Pstyle}"/>
<TextBlock Name="MyTextBlock2" Text="MyTextBlock2Text" Style="{StaticResource Pstyle}"/>
<TextBlock Name="MyTextBlock3" Text="MyTextBlock3Text" Style="{StaticResource Pstyle}"/>
正如你所看到的,只有一个单一的样式应用于不同的Textblock
。
那么你应该把它应用到你的listview中。