我正在使用带有xml文件的wpf数据网格作为DataContext。 除了遍历表并折叠各行之外,所有工作都很好。 有几个复选框,用户可以根据错误级别字符串决定他想要查看哪种行。
如果选中复选框,则某些行会折叠,而其他行则不会折叠。您需要取消选中该复选框并再次检查以折叠第一次尝试和其他一些尝试。如果再次重新检查它,每次都会折叠更多行。 我想这与实际可见的列表有多少有关,以及窗口大小有多少。
提前致谢。
foreach (DataGridRow r in rows)
{
bool showRow = true;
var tb = Datagrid.GetCell(dataGridEvents, r, 2).Content;
string level = ((TextBlock)tb).Text;
switch (level)
{
case "Warning":
showRow = checkBoxWarnings.IsChecked.HasValue ? checkBoxWarnings.IsChecked.Value : false;
break;
case "Critical":
showRow = checkBoxCritical.IsChecked.HasValue ? checkBoxCritical.IsChecked.Value : false;
break;
case "OK":
showRow = checkBoxOK.IsChecked.HasValue ? checkBoxOK.IsChecked.Value : false;
break;
case "Unknown":
showRow = checkBoxUnknown.IsChecked.HasValue ? checkBoxUnknown.IsChecked.Value : false;
break;
}
r.Visibility = showRow ? Visibility.Visible : Visibility.Collapsed;
}
答案 0 :(得分:0)
我想这与列表的实际可见量有多大关系,与窗口大小有多大关系。
我认为你是对的。
在我看来,您应该避免以任何方式使用可见性,并且最好在ICollectionView
上使用DataContext
并在CheckBox
事件中对其进行过滤。
您可以在How to: Group, Sort, and Filter Data in the DataGrid Control