WPF TreeView ItemsSource不保留值

时间:2011-05-03 03:12:19

标签: wpf binding

我正在使用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 :(得分:0)

我会检查以下内容。

  1. 单击treeview复选框时会调用AccountViewModel.Ischecked的setter。如果没有 - 那就是问题,如果是,你应该看看你的集合绑定。

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

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

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

答案 1 :(得分:0)

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