【问题标题】:change style of a single cell in a datagrid WPF / C#更改数据网格 WPF / C# 中单个单元格的样式
【发布时间】:2014-10-21 07:39:24
【问题描述】:

下面的代码在数据网格的单元格中设置背景颜色,但是在滚动网格时。滚动网格值正在变化。

有人知道解决办法吗?

foreach (var item in dgrid.SelectedItems)
            {
                var row = this.dgDados.ItemContainerGenerator.ContainerFromItem(dgDados) as DataGridRow;

                if (row == null)
                {
                    dgDados.UpdateLayout();
                    dgDados.ScrollIntoView(dgDados.Items.IndexOf(item));
                    row = (DataGridRow)dgDados.ItemContainerGenerator.ContainerFromIndex(dgDados.Items.IndexOf(item));
                }
                row.Background = corLinha;
            }

【问题讨论】:

  • 可能通过使用 MVVM 并在 cell 模板 中将 Background 绑定到值。请分享更多信息...

标签: c# wpf datagrid


【解决方案1】:

在 WPF 中,您不应该在代码中执行此类操作 - 在您的 XAML 中使用 Trigger...
看看WPF DataGrid selected row style

【讨论】:

    【解决方案2】:
    <DataGridTextColumn Header="MyHeader" Binding="{Binding Path=MyPath, Converter={StaticResource MyConverter}" Width="Auto" IsReadOnly="True">
        <DataGridTextColumn.CellStyle>
            <Style TargetType="DataGridCell">
                 <Setter Property="Background" Value="Yellow" />
            </Style>
        </DataGridTextColumn.CellStyle> 
    </DataGridTextColumn>
    

    【讨论】:

    • 感谢您发布解决方案,但最好尝试解释您正在做什么来帮助提问者。他们通常会问,因为他们缺乏信息,而不仅仅是解决方案。因此,对您的解决方案进行全面(即使是简短)描述会很有帮助