我正在制作一个 WPF 程序,它能够为 a 中的行着色DataGrid
一个接一个地使用红色for
循环,我遇到了一些奇怪的事情。如果DataGrid
数据库表中有 40 多行数据,它不会对所有行进行着色。
这是我正在使用的代码。
private void Red_Click(object sender, RoutedEventArgs e)
{
for (int i = 0; i < dataGrid1.Items.Count; i++)
{
DataGridRow row = (DataGridRow)dataGrid1.ItemContainerGenerator.ContainerFromIndex(i);
if (row != null)
{
row.Background = Brushes.Red;
}
}
}
是否有其他方法可以通过其他方法将行逐一着色,或者这是 wpftoolkit 中的某种错误?
如果要为每行定义颜色,并且行显示的项目有一个属性,则可以使用 ItemsContainerStyle 来设置行颜色。在下面的示例中,网格中的项目将有一个名为 ItemColour 的属性,该属性将定义背景行颜色。绑定从行绑定到行包含的项目。
<dg:DataGrid.ItemContainerStyle>
<Style
TargetType="{x:Type dg:DataGridRow}"
BasedOn="{StaticResource {x:Type dg:DataGridRow}}">
<Setter
Property="Background"
Value="{Binding ItemColour}" />
</Style>
</dg:DataGrid.ItemContainerStyle>
但您可能不希望您的商品具有 ItemColour 属性,因为它们可能是您的业务模型。这就是 ViewModel 发挥作用的地方。您定义一个中间层来包装您的业务层和基于某些自定义逻辑的 ItemColour 属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)