Tengo un WPF DataGrid que tiene un pincel AlternatingRowBackground. Está configurado para colorear cada dos filas. Me gustaría hacer algo sobre el mouse que resalte la fila actual. Sin embargo, el disparador de estilo parece estar perdiendo en el pincel AlternatingRowBackground. Obtengo la coloración de fila deseada sobre el mouse ... pero solo en las filas que no están pintadas con el pincel AlternatingRowBackground.Disparador de estilo WPF para DataGridRow Color de fondo superado por AlternatingRowBackground Brush
Aquí es el estilo en Windows.Resources:
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Skins/MainSkin.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="IsMouseOver"
Value="True">
<Setter Property="Background"
Value="Red" />
<Setter Property="FontWeight"
Value="ExtraBold" />
<Setter Property="Height"
Value="20" />
</Trigger>
</Style.Triggers>
</Style>
</ResourceDictionary>
</Window.Resources>
Y aquí es la cuadrícula de datos:
<DataGrid Margin="25,15,25,0"
VerticalAlignment="Top"
ItemsSource="{Binding DocumentTypeList}"
AutoGenerateColumns="False"
Height="500"
AlternationCount="2"
FrozenColumnCount="2"
AlternatingRowBackground="{DynamicResource AlternatingRow}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Abbreviation}"
Header="Abbreviation" />
<DataGridTextColumn Binding="{Binding Title}"
Header="Title" />
<DataGridTextColumn Binding="{Binding Fee}"
Header="Fee" />
<DataGridTextColumn Binding="{Binding SpecialInstructions}"
Header="Special Instructions" />
</DataGrid.Columns>
</DataGrid>
¿Hay una manera de declarar el ganador absoluto? ¿Es el problema uno de una jerarquía? Me parece que el pincel AlternatingRowBackground gana porque está directamente asociado con la parte más específica de la declaración.
Actualización: Aquí se muestra la sintaxis correcta, en base a @ orientación del Val:
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Skins/MainSkin.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="IsMouseOver"
Value="True">
<Setter Property="Background"
Value="Red" />
<Setter Property="FontWeight"
Value="ExtraBold" />
<Setter Property="Height"
Value="20" />
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="{x:Type DataGrid}">
<Setter Property="AlternatingRowBackground" Value="{DynamicResource AlternatingRow}"/>
</Style>
</ResourceDictionary>
</Window.Resources>
Y la cuadrícula de datos (menos el cepillo AlternatingRowBackground):
<DataGrid Margin="25,15,25,0"
VerticalAlignment="Top"
ItemsSource="{Binding DocumentTypeList}"
AutoGenerateColumns="False"
Height="500"
AlternationCount="2"
FrozenColumnCount="2">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Abbreviation}"
Header="Abbreviation" />
<DataGridTextColumn Binding="{Binding Title}"
Header="Title" />
<DataGridTextColumn Binding="{Binding Fee}"
Header="Fee" />
<DataGridTextColumn Binding="{Binding SpecialInstructions}"
Header="Special Instructions" />
</DataGrid.Columns>
</DataGrid>
definitivamente estoy yendo en la dirección correcta. Agregué la propiedad Setter como sugirió ... no al {x: Type DataGridRow}, sino como un estilo separado para {x: Type DataGrid}. Eso hace el truco. –
¡Gracias! No estoy seguro de por qué la definición de AlternatingRowBackground en un estilo DataGrid en lugar de en DataGrid.AlternatingRowBackground permite que el desencadenador funcione, pero me alegro de que lo haga. –