C# 启用和禁用数据网格中的行

C# 启用和禁用数据网格中的行,c#,wpf,datagrid,C#,Wpf,Datagrid,我在datagrid中尝试启用和禁用行: public IEnumerable GetDataGridRows(DataGrid grid) { var itemsSource = grid.ItemsSource as IEnumerable; if (null == itemsSource) yield return null; foreach (var item in itemsSource) { var row = g

我在datagrid中尝试启用和禁用行:


public IEnumerable 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;  
    }  
}  

private void DisableGridRows()
{  
    bool enableRow = false;  
    var rows = GetDataGridRows(myGrid);  
    foreach (DataGridRow dataRow in rows)  
    {  
        if (!enableRow)  
        { 
            dataRow.IsEnabled = false;  
            enableRow = true;  
        }  
        else  
        {  
            enableRow = false;  
        }  
    }  
}  
我遇到的问题是,有时行不会被禁用。在debug中运行时,我无法复制该问题,因此它会让人觉得网格没有更新


有什么想法吗?

您是否启用了
Virtualization
,如果启用了
ItemContainerGenerator。ContainerFromItem
将只返回屏幕上可见的行,而不是基础集合中存在的所有行,Xaml
触发器将是一种更干净的方法我会检查一下,但你所描述的正是我所看到的。我曾考虑过XAML触发器,但在启用或禁用哪些行时会有各种条件。我在考虑一个过滤器。是的,看起来是虚拟化导致了这个问题