多个属性的一个 DataTrigger
One DataTrigger for multiple properties
我有一个绑定到 Observable 集合的列表视图,列表视图的属性中的大多数将使用相同的触发器。
是否可以在资源部分定义一次触发器,并在属性需要时仅引用它?
到目前为止我是这样的:
<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>
在列表视图成员中,我只是将定义的样式应用到属性 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
s。
那么你应该根据你的列表视图调整它。
我有一个绑定到 Observable 集合的列表视图,列表视图的属性中的大多数将使用相同的触发器。 是否可以在资源部分定义一次触发器,并在属性需要时仅引用它?
到目前为止我是这样的:
<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>
在列表视图成员中,我只是将定义的样式应用到属性 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
s。
那么你应该根据你的列表视图调整它。