C# 启用和禁用数据网格中的行
我在datagrid中尝试启用和禁用行: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
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触发器,但在启用或禁用哪些行时会有各种条件。我在考虑一个过滤器。是的,看起来是虚拟化导致了这个问题