WPF DataGrid столбцы чередующейся окраски - PullRequest
3 голосов
/ 24 октября 2010

Как сделать раскраску столбцов в DataGrid, если я также хочу использовать свойство AlternatingRowBackground?У меня есть некоторые идеи, но они не работают: (.

<de:DataGrid Name="dataGrid1"
                             AlternationCount="2"
                             AlternatingRowBackground="Salmon"
                             >
                    <de:DataGrid.Columns>
                        <de:DataGridTextColumn Binding="{Binding Path=Phrase}"
                                               Header="Phrase">
                            <de:DataGridTextColumn.ElementStyle>
                                <Style TargetType="{x:Type TextBlock}">
                                    <Style.Triggers>
                                        <Trigger Property="ItemsControl.AlternationIndex" Value="0">
                                            <Setter Property="Background" Value="Green"></Setter>
                                        </Trigger>
                                        <Trigger Property="ItemsControl.AlternationIndex" Value="1">
                                            <Setter Property="Background" Value="Red"></Setter>
                                        </Trigger>

                                    </Style.Triggers>
                                </Style>
                            </de:DataGridTextColumn.ElementStyle>
                        </de:DataGridTextColumn>
                     </de:DataGrid.Columns>
                </de:DataGrid>

Может, кто-нибудь знает рабочее решение? Спасибо.

1 Ответ

0 голосов
/ 24 октября 2010

Вы ищете свойство AlternationIndex в неправильном элементе управления. Это свойство принадлежит DataGridRow.

<DataGrid ItemsSource="{Binding}" AlternationCount="2" AutoGenerateColumns="False" AlternatingRowBackground="Salmon">
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding Path=Phrase}" Header="Phrase">
                    <DataGridTextColumn.ElementStyle>
                        <Style TargetType="{x:Type TextBlock}">
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding AlternationIndex, RelativeSource={RelativeSource AncestorType=DataGridRow}}" Value="0">
                                    <Setter Property="Background" Value="Green"></Setter>
                                </DataTrigger>
                                <DataTrigger Binding="{Binding AlternationIndex, RelativeSource={RelativeSource AncestorType=DataGridRow}}" Value="1">
                                    <Setter Property="Background" Value="Red"></Setter>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </DataGridTextColumn.ElementStyle>
                </DataGridTextColumn>
            </DataGrid.Columns>
          </DataGrid>
...