首页 文章

WPF TreeView ItemsSource不保留值

提问于
浏览
0

我正在使用wpf treeview并将ItemsSource绑定到具有IsChecked属性的ViewModel的IEnumerable . 我使用模式为TwoWay将复选框绑定到此值 . 当我检查复选框时,我可以看到当我单步执行程序时它正在我的ViewModel上正确设置此值 .

然后我有一个菜单项“运行检查” . 在这个方法中,我有一个foreach循环,它通过ItemsSource运行,因为ViewModel的IEnumerable正在寻找IsChecked = true来排列被单独程序运行的已检查项目 . 因此:

foreach (AccountViewModel account in tvClientList.ItemsSource as IEnumerable<AccountViewModel>)
                {
                    if (account.IsChecked)
                    {
                        context.Queues.InsertOnSubmit(new Queue {Id = account.Id});
                    }
                }

但是,account.IsChecked始终为false . 为什么是这样?

2 回答

  • 0

    只为其他人遇到这个问题 . ItemsSource返回一组新数据,Items包含当前的数据集 .

  • 0

    我会检查以下内容 .

    单击treeview复选框时,

    • 会调用AccountViewModel.Ischecked的setter . 如果没有 - 那就是问题,如果是,你应该看看你的集合绑定 .

    • 调试你的foreach并检查treeviewitemssource是你期望的集合 .

    也许你可以发布你的绑定,如果这一切都没有帮助 .

    ps:如果使用viewmodels / mvvm,则不要直接访问View控件 .

相关问题