循环遍历Silverlight DataGrid中的行

我有一种感觉,我在这里遗漏了一些明显的东西,但我无法找到迭代DataGrids DataGridRow集合的方法。 我有一个网格,其中包含我的类集合的itemssource。 我试图遍历行并突出显示符合某种条件的任何行,但不能为我的生活看到如何。

您不想遍历网格。 这是一个古怪的WinForms思考。 WPF和Silverlight中的网格已经重新设计了MVVM; 关注分离。 您可以直接使用绑定到网格的对象,而不是操纵网格。 所以网格只是一个演示问题。 它的职责是根据这些对象中的数据读取对象并显示信息。

您要做的是将属性附加到您要绑定的对象,并根据这些设置设置颜色/字体/等的网格集样式。 为此,您需要创建一个IValueConverter。

这是我在WPF和Silverlight数据网格中的转换器示例:

public class StateToBackgroundColorConverter : IValueConverter { #region IValueConverter Members public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null) return Colors.White.ToString(); var state = (State) value; return state.WebColor; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } #endregion } 

在我的XAML中,我声明它是这样的:

    

在XAML中的datagrid声明中,我指定了DataGridRow的转换器用法:

     

所以,转换器完成了工作。 它读取State对象的值(它是我的AgentState对象上的子对象,它是网格绑定到的对象;它绑定到AgentState对象的集合)。 转换器读取状态的值并返回网格的颜色的字符串表示,以用于为行设置。

希望有所帮助。

你试过CollectionViewSource Class吗?

看这里

以及如何使用它过滤,请参阅下面的post

使用CollectionViewSource过滤