在XML绑定的WPF Datagrid中折叠行时出现异常行为

mxg2im7a  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(169)

我使用的是一个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;
        }
b4lqfgs4

b4lqfgs41#

  • 我想这与列表中有多少是实际可见的以及有多少不是因为窗口大小而可见有关。*

我认为你是对的。
在我看来,你应该避免使用任何方式的可见性,你最好使用ICollectionViewDataContext和过滤它的CheckBox事件。
您可以在此处找到示例How to: Group, Sort, and Filter Data in the DataGrid Control

相关问题