Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF datagrid中高亮显示单元格时,没有可见的文本_C#_Wpf_Datagrid_Wpfdatagrid - Fatal编程技术网

C# 在WPF datagrid中高亮显示单元格时,没有可见的文本

C# 在WPF datagrid中高亮显示单元格时,没有可见的文本,c#,wpf,datagrid,wpfdatagrid,C#,Wpf,Datagrid,Wpfdatagrid,作为一名WPF新手,我正在编写一个快速而肮脏的WPF应用程序。我有一个简单的数据网格: <DataGrid ItemsSource="{Binding Path=BetterFoods}" Grid.Row="1" Grid.Column="0" AutoGenerateColumns="True" Loaded="DataGrid_Loaded"> <DataGrid.Resources> <local:ValueColorConverte

作为一名WPF新手,我正在编写一个快速而肮脏的WPF应用程序。我有一个简单的数据网格:

<DataGrid ItemsSource="{Binding Path=BetterFoods}" Grid.Row="1" Grid.Column="0" AutoGenerateColumns="True" Loaded="DataGrid_Loaded">
    <DataGrid.Resources>
        <local:ValueColorConverter x:Key="colorconverter"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#FF0033"/>
    </DataGrid.Resources>
    <DataGrid.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="Background" Value="{Binding RelativeSource={RelativeSource Self}, Path=Content.Text, Converter={StaticResource colorconverter}}"/>
        </Style>
   </DataGrid.CellStyle>
</DataGrid>
IValueConverter
的工作原理与它应该的一样,但它引入了一个奇怪的副作用:选择一行会使其单元格中的所有值消失。这些值仍然存在,因为更改选择或双击单元格会使它们再次可见(请参见下面的.gif)

这显然是不幸的,因为人们通常会突出显示一行,以便更仔细地查看其数据

导致此行为的原因是什么?如何修复它?

添加一个资源(SystemColor.HighlightTextBrushKey),将文本笔刷更改为较暗的颜色,以便您可以实际看到文本:

<DataGrid ItemsSource="{Binding Path=BetterFoods}" Grid.Row="1" Grid.Column="0" AutoGenerateColumns="True">
    <DataGrid.Resources>
        <local:ValueColorConverter x:Key="colorconverter"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#FF0033"/>
        <!-- ADDED: -->
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/>
    </DataGrid.Resources>
    <DataGrid.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="Background" Value="{Binding RelativeSource={RelativeSource Self}, Path=Content.Text, Converter={StaticResource colorconverter}}"/>
        </Style>
    </DataGrid.CellStyle>
</DataGrid>

<DataGrid ItemsSource="{Binding Path=BetterFoods}" Grid.Row="1" Grid.Column="0" AutoGenerateColumns="True">
    <DataGrid.Resources>
        <local:ValueColorConverter x:Key="colorconverter"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#FF0033"/>
        <!-- ADDED: -->
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/>
    </DataGrid.Resources>
    <DataGrid.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="Background" Value="{Binding RelativeSource={RelativeSource Self}, Path=Content.Text, Converter={StaticResource colorconverter}}"/>
        </Style>
    </DataGrid.CellStyle>
</DataGrid>