Я хочу подсчитать цвета таблицы данных.
Мой код выглядит следующим образом
<Window x:Class="DataGridTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:DataGridTest"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<DataGrid Grid.Row="1"
VerticalAlignment="Stretch"
VerticalContentAlignment="Top"
GridLinesVisibility="Horizontal"
VerticalScrollBarVisibility="Visible"
AutoGenerateColumns="True"
SelectionUnit="FullRow"
>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Automatic}" Value="True">
<Setter Property="FontStyle" Value="Italic"/>
<Setter Property="Foreground" Value="Green" />
<Setter Property="Background" Value="GhostWhite"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Automatic}" Value="False">
<Setter Property="Background" Value="FloralWhite"/>
<Setter Property="Foreground" Value="Blue" />
</DataTrigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Foreground" Value="Black" /> <!-- Why is this ignored -->
<Setter Property="Background" Value="Red" />
</Trigger>
</Style.Triggers>
</Style >
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Subject" Binding="{Binding Path=Subject}"/>
<DataGridTextColumn Header="Body" Binding="{Binding Path=Body}"/>
<DataGridTextColumn Header="Automatic" Binding="{Binding Path=Automatic}"/>
</DataGrid.Columns>
<local:Dummy Subject="Subject 1" Body="Body 1" Automatic="True" />
<local:Dummy Subject="Subject 2" Body="Body 2" Automatic="False" />
<local:Dummy Subject="Subject 3" Body="Body 2" Automatic="False" />
</DataGrid>
</Grid>
</Window>
и c #
using System.Windows;
namespace DataGridTest
{
public class Dummy
{
public string Subject { get; set; }
public string Body { get; set; }
public bool Automatic { get; set; }
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}
Результат выглядит как (Последняя строка выбрана):
Что я ожидал : вся последняя (выбранная) строка с черный шрифт на красном фоне.
Что я получил: Как видите, шрифт теперь белый , а фон частично красный / синий .
Интересно, что в первых двух строках сеттер определял цвета переднего плана, как и ожидалось. Даже если я деактивирую первые два установщика для переднего плана, выделенный текст в строке все еще остается белым.
Почему это так? Как определить желаемую расцветку для всего выделения?