【问题标题】:Silverlight Datagrid: Changing cell styles, based on valuesSilverlight Datagrid:根据值更改单元格样式
【发布时间】:2010-09-27 11:34:21
【问题描述】:

我有一些数据。如果该数据满足特定条件,我想浏览该数据并更改单元格(例如 - 背景颜色)。不知何故,我一直无法弄清楚如何在 Silverlight 中完成这个看似简单的事情。

【问题讨论】:

    标签: c# silverlight datagrid cells


    【解决方案1】:

    这是稍微旧的代码(来自 RTM 之前),但它的功能类似于您正在寻找的东西。它检查一行中某个对象的一些数据,然后相应地设置该行的颜色。

    XAML:

    <my:DataGrid x:Name="Grid" Grid.Row="1" Margin="5" GridlinesVisibility="None" PreparingRow="Grid_PreparingRow">
        <my:DataGrid.Columns>
            <my:DataGridTextBoxColumn 
                DisplayMemberBinding="{Binding Cheese}" 
                Header="Cheese"></my:DataGridTextBoxColumn>
            <my:DataGridTextBoxColumn 
                DisplayMemberBinding="{Binding Biscuit}" 
                Header="Biscuit"></my:DataGridTextBoxColumn>
        </my:DataGrid.Columns>
    </my:DataGrid>
    

    代码:

    this.Grid.AlternatingRowBackground = null; 
    
    private void Grid_PreparingRow(object sender, DataGridRowEventArgs e)
    {
        CheesyClass c = e.Row.DataContext as CheesyClass;
        if (c != null && c.Cheese == "cheddar")
        {
           e.Row.Background = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 255, 125, 125));
        }
    }
    

    【讨论】:

    • 这似乎对改变整行颜色的值转换器有意义。对吗?
    • 注意:LoadingRow 是 PreparingRow 的新名称
    【解决方案2】:

    实际上这不适用于所有示例。请参阅这些链接以了解实现此目的的“正确”方式

    http://silverlight.net/forums/p/27465/93474.aspx#93474

    http://silverlight.net/forums/t/27467.aspx

    【讨论】:

      【解决方案3】:

      我通常为每个绑定的数据类型编写自定义 ValueConverters,返回可见性、颜色等。

      这提供了一个定义自定义规则的点,我发现效果很好。

      Robin 的第二个链接描述了编写自定义 ValueConverter。

      【讨论】:

        猜你喜欢
        • 2011-07-29
        • 1970-01-01
        • 2022-09-29
        • 2021-06-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-27
        相关资源
        最近更新 更多