C# 在绑定XML的WPF数据网格中折叠行时的奇怪行为
我使用的是一个wpf数据网格,其中包含一个xml文件作为DataContext。 除了遍历整个表和折叠单个行之外,所有这些都可以正常工作。 有几个复选框,用户可以根据错误级别字符串决定要查看哪种类型的行 如果选中复选框,则某些行将折叠,其他行则不会折叠。您需要取消选中该复选框,然后再次选中该复选框以折叠第一次尝试的复选框和其他一些复选框。如果再次检查,每次都会折叠更多行。 我想这与列表中有多少是可见的有关,而有多少不是因为窗口的大小 提前谢谢C# 在绑定XML的WPF数据网格中折叠行时的奇怪行为,c#,xml,wpf,datagrid,collapse,C#,Xml,Wpf,Datagrid,Collapse,我使用的是一个wpf数据网格,其中包含一个xml文件作为DataContext。 除了遍历整个表和折叠单个行之外,所有这些都可以正常工作。 有几个复选框,用户可以根据错误级别字符串决定要查看哪种类型的行 如果选中复选框,则某些行将折叠,其他行则不会折叠。您需要取消选中该复选框,然后再次选中该复选框以折叠第一次尝试的复选框和其他一些复选框。如果再次检查,每次都会折叠更多行。 我想这与列表中有多少是可见的有关,而有多少不是因为窗口的大小 提前谢谢 foreach (DataGridRow r in
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;
}
我想这与列表中有多少是可见的有关,而有多少不是因为窗口的大小。
我认为你是对的。
在我看来,您应该避免以任何方式使用可见性,最好使用ICollectionView for DataContext,并在复选框事件中过滤它。
你可以在这里找到一个例子