-
在ListView中自定义了模板,想让选定的项目的内容变成想要的颜色。
下面以如下的自定义模板为例说明:
<ListView.ItemTemplate>
<DataTemplate>
<WrapPanel Orientation="Vertical" Margin="4 " >
<Grid Height="2" Background="YellowGreen"/>
<TextBlock Text="{Binding Path=EName}" ToolTip="{Binding EName}" FontWeight="Bold" TextAlignment="Left" Width="150" >
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="DarkBlue"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=ListViewItem}}" Value="True">
<Setter Property="Foreground" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TextBlock Text="{Binding Path=CName}" ToolTip="{Binding CName}" FontWeight="Bold" TextAlignment="Left" Width="150" >
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="DarkBlue"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=ListViewItem}}" Value="True">
<Setter Property="Foreground" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TextBlock Text="{Binding Path=Dept, StringFormat=Dept: {0}}" TextAlignment="Left" Width="150"/>
<TextBlock Text="{Binding Path=ExtNo, StringFormat=Ext: {0}}" TextAlignment="Left" Width="150"/>
<TextBlock Text="{Binding Path=MobileNo, StringFormat=Mobile: {0}}" TextAlignment="Left" Width="150"/>
</WrapPanel>
</DataTemplate>
</ListView.ItemTemplate>
重点在下面的部分:
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="DarkBlue"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource AncestorType=ListViewItem}}" Value="True">
<Setter Property="Foreground" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
效果如图所示,可见中间选定的项目的颜色变成了指定的红色,而两边未选定的内容是默认的深蓝色:
![](https://img.haomeiwen.com/i14575015/c5a34e0a1d2971c2.png)
-
想让ListView的显示项目根据绑定数据的属性变色
下面以ListViewItem根据绑定的数据的Changed属性来变色,如果这个值为真则显示为红色字体。
<ListView x:Name="lvSelectedRoles" ItemsSource="{Binding ElementName=lvUsers, Path=SelectedItem.SelectedRoles}" DisplayMemberPath="Code" SelectionChanged="lvSelectedRoles_SelectionChanged">
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding Changed}" Value="True">
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
</Style.Triggers>
<Setter Property="ToolTip" Value="{Binding Name}"/>
</Style>
</ListView.ItemContainerStyle>
</ListView>
效果如下图,Changed值为真的项目显示为红色:
![](https://img.haomeiwen.com/i14575015/b8f7822814cbdd6d.png)
网友评论