作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
全部,我正在尝试使用 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/
我是一名优秀的程序员,十分优秀!