web-dev-qa-db-fra.com

wpf datagrid coloration sur une autre ligne

J'ai essayé cette méthode .. sans chance ..

 <Style TargetType="{x:Type DataGridRow}">
  <Style.Triggers>
      <Trigger Property="ItemsControl.AlternationIndex" Value="0">
          <Setter Property="Foreground" Value="Red" />
     </Trigger>
  </Style.Triggers>
</Style>

Y at-il un moyen d’obtenir l’index de la ligne?

<DataTrigger Binding="{Binding AlternationIndex}" Value="0">
    <Setter Property="Foreground" Value="Green"></Setter>
</DataTrigger>
38
Robin Maben

Sauf si cela est déjà fait, vous devez définir la propriété AlternationCount de DataGrid:

<DataGrid AlternationCount="2"
          ... />

Vous devez également vérifier si la propriété Foreground est utilisée pour un contrôle quelconque dans le DataGridRow. Essayez de définir la propriété Background pour tester les options d’alternance.

34
matthias.lukaszek

Enfin, c’est ce que j’ai utilisé pour définir de manière générique des couleurs de rangées alternatives.

<Style TargetType="{x:Type DataGrid}">
    <Setter Property="Background" Value="#FFF" />
    <Setter Property="AlternationCount" Value="2" />
</Style>

 <Style TargetType="{x:Type DataGridRow}">
    <Style.Triggers>
        <Trigger Property="ItemsControl.AlternationIndex" Value="0">
            <Setter Property="Background" Value="#CCC"></Setter>
        </Trigger>
        <Trigger Property="ItemsControl.AlternationIndex" Value="1">
            <Setter Property="Background" Value="#EEE"></Setter>
        </Trigger>
    </Style.Triggers>
</Style>
35
Robin Maben

Essayez de définir le fond alternatif comme ceci:

  AlternationCount="2" AlternatingRowBackground="Bisque"
22
Th3G33k

Essaye ça

  <DataGrid AlternationCount="2"
            AlternatingRowBackground="Salmon" ........
0
Alan392

Enfin, j'ai utilisé la combinaison des solutions Robin Maben et Th3G33k, car je souhaite que la couleur de l'alternance prenne le pas sur la mienne, dès qu'une condition est remplie . Merci à vous deux. 

<DataGrid x:Name="gridCustomerOrderItems" HorizontalAlignment="Stretch" 
                  VerticalAlignment="Stretch" AutoGenerateColumns="False"
                  AlternationCount="2"
                  IsReadOnly="True" CanUserReorderColumns="True"
                      ScrollViewer.CanContentScroll="True"
                      ScrollViewer.VerticalScrollBarVisibility="Auto"
                      ScrollViewer.HorizontalScrollBarVisibility="Auto">

                <DataGrid.RowStyle>
                    <Style TargetType="DataGridRow">
                        <Style.Triggers>
                            <!--first alteraniting colour-->
                            <Trigger Property="ItemsControl.AlternationIndex" Value="1">
                                <Setter Property="Background" Value="#EEE"></Setter>
                            </Trigger>
                            <!--then override with my own colour-->
                            <DataTrigger Binding="{Binding InvoiceSet}" Value="True">
                                <Setter Property="Background" Value="Green"></Setter>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </DataGrid.RowStyle>
0
rosta