如何浏览WPF列表视图中的所有文本块?现在我已经定义了一个我必须应用于每个文本块的样式。看起来像这样
<Style x:Key="orderDetailsTextBlock" TargetType="TextBlock" >
<Style.Triggers>
<DataTrigger Binding="{Binding Status}" Value="Failed">
<Setter Property="TextDecorations" Value="Strikethrough" />
</DataTrigger>
</Style.Triggers>
</Style>
我想要的是能够在ListViewItem样式块中应用一次。
我试着这样做
<Style x:Key="ordersListViewItemStyle" TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding Status}" Value="Failed">
<Setter Property="TextBlock.TextDecorations" Value="Strikethrough" />
</DataTrigger>
</Style.Triggers>
</Style>
但这不起作用。任何帮助将不胜感激。
更新 我更新了ListView的XAML,如下所示
<ListView x:Name="orderDetails" AlternationCount="2" ItemContainerStyle="{StaticResource ordersListViewItemStyle}" >
<ListView.Resources>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding Status}" Value="Failed">
<Setter Property="TextDecorations" Value="Strikethrough" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn Width="100" Header="Статус" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock
Text="{Binding Path=Status, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
ToolTip="{Binding Path=Message, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
TextAlignment="Center" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
什么都没发生。我做错了什么?
答案 0 :(得分:2)
您可以在ListView.Resources
内定义样式而不使用Key
,并且其范围将仅限于特定TextBlock
内的所有ListView
。
例如:
<ListView x:Name="MyListView">
<ListView.Resources>
<Style TargetType="TextBlock">
<!-- Style specific content -->
</Style>
</ListView.Resources>
<!-- ListView content -->
</ListView>
答案 1 :(得分:1)
删除x:Key
样式的TextBlock
并将其放入ListView.Resources
,然后应自动应用。 (见TargetType
上的评论)