在我的wpf应用程序中,我每30分钟发布一个事件,它会在所有打开的窗口上重新绑定自动生成的数据网格,之后我遍历每行datagrid以执行某些操作。我使用下面的方法获取自动生成的wpf datagrid的所有行。
public static IEnumerable<DataGridRow> GetDataGridRows(DataGrid grid)
{
var itemsSource = grid.ItemsSource as IEnumerable;
if (null == itemsSource) yield return null;
foreach (var item in itemsSource)
{
var row = grid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
if (null != row) yield return row;
}
}
它适用于活动窗口(活动选项卡)并返回所有行,但对于其他窗口(非活动选项卡),它返回null。
(注意:在我的应用程序中,窗口以选项卡格式排列,我使用Avalon Dock作为停靠窗口控件。)