gpt4 book ai didi

c# - 使用 foreach 遍历 WPF DataGrid

转载 作者:太空狗 更新时间:2023-10-29 21:23:09 25 4
gpt4 key购买 nike

全部,我正在尝试使用 for each 循环遍历 WPF DataGrid 以更改错误单元格的背景颜色。我检查了很多问题,但我还没有找到足够的答案。到目前为止我所拥有的是

public void RunChecks()
{
const int baseColumnCount = 3;
foreach (DataRowView rv in dataGrid.Items)
{
for (int i = baseColumnCount; i < dataGrid.Columns.Count; i++)
{
if (!CheckForBalancedParentheses(rv.Row[i].ToString()))
{
Color color = (Color)ColorConverter.ConvertFromString("#FF0000");
row.Background = new SolidColorBrush(color); // Problem!
}
}
}
}

问题是,为了更改 DataGrid 中一行的 Background 颜色,我需要使用关联的 DataGridRow 对象使用 DataRowView rv

如何从对象 rv (DataRowView) 获取对 DataGridRow 的引用?

感谢您的宝贵时间。

编辑。根据下面的建议,我现在有以下样式,它适用于鼠标悬停事件并设置相关单元格的前后字体。但是,我真的不知道如何在上面的代码中在运行时将背景色应用于单元格。 XML 样式是

<Window.Resources>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="IsMouseOver"
Value="True">
<Setter Property="Background" Value="Red" />
<Setter Property="FontWeight" Value="ExtraBold" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>

最佳答案

当您使用 WPF 时,始终避免直接访问 UI 工件。

在您的 ModelView 中创建一个属性 Color,并将其绑定(bind)到 DataGrid View 的单行模板的背景颜色。

因此,为了更改颜色,您将循环抛出 ModelView 集合并设置/读取绑定(bind)到每一行的每个对象的 Color 属性。通过更改它,如果绑定(bind)设置正确,您将影响行 UI 颜色外观。

具体示例可以看:

How do I bind the background of a data grid row to specific color?

关于c# - 使用 foreach 遍历 WPF DataGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15657348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com