3

我想更改 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”属性。我也曾尝试在我的代码中执行此操作,但无法使其正常工作。

这似乎是一件相当简单的事情,但我没有管理它,所以任何建议都将不胜感激。

谢谢,威尔

4

2 回答 2

1

您可以创建一个 IValueConverter 来返回您的 Style,可以是 Style 对象,也可以只是一个字符串表示形式(即样式的名称)。那么你可以将你的DataGrid的style属性绑定到转换器,并传入底层的item列表作为参数来确定当前item的索引吗?

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

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;
    }
}

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

我现在很好奇,我可能会尝试一下,看看我是否可以让它工作!

于 2009-12-07T14:03:56.023 回答
0

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

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

于 2009-09-30T21:44:23.943 回答