我使用的是一个wpf数据网格,其中有一个xml文件作为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;
}
1条答案
按热度按时间b4lqfgs41#
我认为你是对的。
在我看来,你应该避免使用任何方式的可见性,你最好使用
ICollectionView
的DataContext
和过滤它的CheckBox
事件。您可以在此处找到示例How to: Group, Sort, and Filter Data in the DataGrid Control