【问题标题】:Style first row in a WPF Datagrid样式 WPF 数据网格中的第一行
【发布时间】:2009-09-30 14:11:57
【问题描述】:

我想(仅)更改 WPF 数据网格中第一行的样式,但还没有找到方法。我想知道如何创建一个触发器,如下所示:

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

但这当然行不通,因为 DataGridRow 上没有“SelectedIndex”属性。我也曾尝试在我的代码中执行此操作,但无法使其正常工作。

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

谢谢, 会

【问题讨论】:

    标签: c# .net wpf datagrid wpfdatagrid


    【解决方案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;
        }
    }
    

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

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

    【讨论】:

    • 不知道,很久以前了,快一年没碰WPF了!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 2014-05-06
      • 2012-09-14
      • 1970-01-01
      相关资源
      最近更新 更多