WPF DataGrid:如何仅设置第一行的样式?

WPF DataGrid:如何仅设置第一行的样式?,wpf,xaml,datagrid,row,selectedindex,Wpf,Xaml,Datagrid,Row,Selectedindex,我试着寻找答案,但发布的问题没有得到回答 我尝试过一些复杂的XAML,但它从来都不起作用。如果选择了第一行,下面的代码将使所有行变灰。我只需要灰显第一行,不管选择了哪一行索引 <TextBlock.Style> <Style TargetType="TextBlock"> <Setter Property="Foreground" Value="Black"/> <Setter Property="FontStyl

我试着寻找答案,但发布的问题没有得到回答

我尝试过一些复杂的XAML,但它从来都不起作用。如果选择了第一行,下面的代码将使所有行变灰。我只需要灰显第一行,不管选择了哪一行索引

<TextBlock.Style>
    <Style TargetType="TextBlock">
        <Setter Property="Foreground" Value="Black"/>
        <Setter Property="FontStyle" Value="Normal"/>
        <Style.Triggers>
            <MultiDataTrigger>
                <MultiDataTrigger.Conditions>
                    <Condition Binding="{Binding Path=SelectedIndex, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGrid}}}" Value="0"/>
                </MultiDataTrigger.Conditions>
                <Setter Property="Foreground" Value="Gray"/>
                <Setter Property="FontStyle" Value="Italic"/>
            </MultiDataTrigger>
        </Style.Triggers>
    </Style>
</TextBlock.Style>

有人能帮忙吗


谢谢。

您可以使用所有
项控件上的
AlternationCount
属性(参考)


...
编辑

<DataGrid ItemsSource="{Binding Items}"
          AlternationCount="2"
          VirtualizingStackPanel.IsVirtualizing="False">
          ... 
          >
    <DataGrid.ItemContainerStyle>
        <Style TargetType="DataGridRow">
            <Style.Triggers>
                <Trigger Property="ItemsControl.AlternationIndex" Value="1">
                    <Setter Property="Background" Value="Gray"/>
                </Trigger>
                <DataTrigger
                    Binding="{Binding RelativeSource={RelativeSource Mode=PreviousData}}"
                    Value="{x:Null}">
                    <Setter Property="Foreground" Value="Gray"/>
                    <Setter Property="FontStyle" Value="Italic"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.ItemContainerStyle>
    ...
</DataGrid>

... 
>
...

谢谢你的建议。它可以工作,除了一个小问题:我需要AlternationCount等于2(以具有交替的白色和灰色行背景)。如果我将AlternationCount设置为Int.MaxValue,我将丢失背景颜色。有什么建议可以让这两种功能都工作吗?当然,但它需要,这就是为什么我更喜欢第一种方法。再次感谢你。我想我们真的很接近。我会再给它一些时间看看结果如何。
<DataGrid ItemsSource="{Binding Items}"
          AlternationCount="2"
          VirtualizingStackPanel.IsVirtualizing="False">
          ... 
          >
    <DataGrid.ItemContainerStyle>
        <Style TargetType="DataGridRow">
            <Style.Triggers>
                <Trigger Property="ItemsControl.AlternationIndex" Value="1">
                    <Setter Property="Background" Value="Gray"/>
                </Trigger>
                <DataTrigger
                    Binding="{Binding RelativeSource={RelativeSource Mode=PreviousData}}"
                    Value="{x:Null}">
                    <Setter Property="Foreground" Value="Gray"/>
                    <Setter Property="FontStyle" Value="Italic"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.ItemContainerStyle>
    ...
</DataGrid>