在WPF Datagrid中设置第一行样式

时间:2009-09-30 14:11:58

标签: c# .net wpf datagrid wpfdatagrid

我想在WPF Datagrid中更改第一行(仅限)的样式,但尚未找到如何执行此操作。我想知道创建一个触发器,如下所示:

<Style TargetType="{x:Type dg:DataGridRow}">
    <Style.Triggers>
        <Trigger Property="SelectedIndex" Value="0">
            <Setter Property="Background" Value="Red"/>
        </Trigger>
    </Style.Triggers>
</Style>

但是当然这不起作用,因为DataGridRow上没有'SelectedIndex'属性。我在我的代码背后也尝试过这样做,但无法让它工作。

看起来似乎相当简单,但我还没有管理它,所以任何建议都会受到最高的赞赏。

谢谢, 将

2 个答案:

答案 0 :(得分:1)

您可以创建一个IValueConverter来返回Style,可以是Style对象,也可以只是字符串表示(即样式的名称)。然后,您可以将DataGrid的样式属性绑定到转换器,并将基础项目列表作为参数传入,以确定当前项目的索引?

转换器可能看起来像这样......

public class StyleConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        Style style1 = App.Current.FindResource("RowStyle1") as Style;
        Style style2 = App.Current.FindResource("RowStyle2") as Style;

        List<object> items = parameter as List<object>;

        if (items[0] == value)
        {
            return style1;
        }

        return style2;
    }
}

不确定这是否可行,我可能也没有解释得很好!

我现在很好奇,我可以尝试一下,看看能否让它发挥作用!

答案 1 :(得分:0)

我不知道如何做到这一点,但可以冻结一行。这符合您的需求吗?以下链接中的代码可能会引导您获得有关如何访问特定行的解决方案,以便您可以对其应用样式。

http://blogs.msdn.com/vinsibal/archive/2008/10/31/wpf-datagrid-frozen-row-sample.aspx