2014-12-17 1 views
4

У меня есть DataGrid, который использует AlternatingRowBackground, чтобы сделать его более удобным для чтения. В той же сетке у меня также есть изменение цвета фона для строк на основе "IsMouseOver"Setter Property в моем App.xaml файле. Проблема, с которой я столкнулась, состоит в том, что строки, которые имеют чередующийся цвет (они не белые), не меняются на цвет "IsMouseOver", когда мышь нависает над ним. В основном цвет AlternatingRowBackground имеет приоритет над моим RowStyle. Как сделать так, чтобы цветные строки менялись, когда мышь нависала над ними?DataGrid - AlternatingRowBackground цвет, мешающий цвету «IsMouseOver»

App.xaml:

<!-- DataGrid Row Style --> 
    <Style x:Key="RowStyleWithAlternation" TargetType="DataGridRow"> 
     <Setter Property="SnapsToDevicePixels" Value="True" /> 
     <Setter Property="Background" Value="GhostWhite"/> 
     <Setter Property="FontWeight" Value="Normal"/> 
     <Setter Property="ContextMenu" Value="{x:Null}"/> 
     <Style.Triggers> 
      <Trigger Property="AlternationIndex" Value="1"> 
       <Setter Property="Background" Value="#FFD0D0E0"/> 
      </Trigger> 
      <Trigger Property="IsMouseOver" Value="True"> 
       <Setter Property="Background" Value="Purple"/> 
      </Trigger> 
      <Trigger Property="IsSelected" Value="True"> 
       <Setter Property="Background" Value="#F9F99F" /> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 

XAML управления пользователя:

<DataGrid ... AlternatingRowBackground="Gray" RowStyle="{StaticResource RowStyleWithAlternation}" ... /> 
+0

Установка свойства непосредственно (AlternatingRowBackground = «Серый») имеет приоритет над триггером. См. Ссылку, упомянутую @Bruno для более продолжительного обсуждения. –

ответ

1

Это работает, если вы измените свое UserControl.xaml следующим образом:

<DataGrid RowStyle="{StaticResource RowStyleWithAlternation}" AlternationCount="2" /> 

фона устанавливается через триггер AlternationIndex в вашей строке, который не имеет приоритета над IsMouseOver.

Я нашел ответ на этот пост:

WPF Style Trigger for DataGridRow Background Color Trumped by AlternatingRowBackground Brush

Смежные вопросы