我有一个ListView,每个Item有三个TextBlock . 第一个具有默认颜色(黑色),其他具有前景属性设置为灰色 .
当我选择一个项目时,第一个TextBlock的颜色变为蓝色,但其他颜色保持灰色并且难以阅读 .
我想要在选择项目时所有文本都变成白色 . 我怎么做的?
编辑:我的风格:
<UserControl.Resources>
<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Foreground" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
我的ListView
<ListView x:Name="lvResultat" Grid.Row="0" Grid.Column="1" Background="{x:Null}"
Margin="4"
HorizontalContentAlignment="Stretch"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding ResultatsRecherche}" SelectedItem="{Binding ResultatSelectione, Mode=TwoWay}" BorderBrush="{x:Null}" MouseDoubleClick="lvResultat_MouseLeftDoubleClick" >
<ListView.ItemTemplate>
<DataTemplate DataType="viewModel:ResultatRechercheViewModel">
<Grid Height="86" Margin="2" >
<Grid.RowDefinitions>
<RowDefinition Height="1.5*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="0.5*"/>
</Grid.RowDefinitions>
<TextBlock Text="{Binding Titre}"
FontSize="20" FontWeight="Bold" />
<TextBlock Text="{Binding SousTitre}" Grid.Row="1"
FontStyle="Italic" Foreground="Gray"/>
<TextBlock Text="{Binding Resume}" Grid.Row="2" TextTrimming="WordEllipsis"
Foreground="Gray"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我也尝试过类似的东西
<Style TargetType="ListViewItem">
<Style.Resources>
<!--<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="White" />-->
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="White" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="White" />
</Style.Resources>
</Style>
编辑2:我发现自定义样式会更改Textblock的颜色,其默认属性为Foreground(黑色) . 如果我为第一个文本块的文本颜色指定黑色,则在选择项目时文本不再更改颜色 .
图片:
3 回答
前景尝试使用listView项目的样式:
您可以通过将代码从
DataTemplate
转换为ListViewItem
到具有ControlTemplate
来实现您要执行的操作这是我试过的:
ListViewItem样式:
然后我从
ListView
XAML中删除了DataTemplate:但是,如果你必须使用
DateTemplate
,那么你可以做的是在ViewModel
,ResultatRechercheViewModel
上有一个名为IsSelected
的属性,然后在DataTemplate
中的该属性上有DataTriggers .更新的DataTemplate:
并且,您需要更新
ViewModel
代码以设置IsSelected
属性,以下是我的MainViewModel中的代码:希望这可以解决您的问题或给您一些解决问题的想法 .
试试这个语法