WPF Treeview更新
问题描述:
我必须在一个窗口中查看树视图。这两个树视图都绑定到一个可观察的集合“ReportStructure”。WPF Treeview更新
这两个treeviews都显示可观察集合的树状层次结构。我使用了一个树形视图T1。选择我想在第二个树视图T2中显示的节点。
第一个treeview在每个叶子上都有复选框,当我检查或取消选中一个叶子时,它会在T2中显示或隐藏。为了让我这样做,我不得不重新查询绑定的CollectionView这样
var IEquip = from eq in Report.Document.InspectionData.Equipments where eq.PartData.ReportIncluded = true
orderby eq.PartData.Order ascending
select eq;
EquipmentView = CollectionViewSource.GetDefaultView(IEquip);
EquipmentView.SortDescriptions.Add(
new SortDescription("PartData.Order", ListSortDirection.Ascending));
的“ReportStructure”上面是Report.Document.InspectionData.Equipments。
我的问题是,当我再次查询的datacontext为T2 T1中的所有节点都倒塌
我我的XAML我已经设置updatesourcetrigger明确的,但它仍然崩溃。
<TreeView Grid.Row="5" IsEnabled="True" HorizontalContentAlignment="Stretch" Background="Transparent" BorderThickness="0"
ItemsSource="{Binding ReportStructure, UpdateSourceTrigger=Explicit}" HorizontalAlignment="Stretch" />
克隆将是一个解决方案,但后来我松散的方法可行更新从T1的信息T2,而没有经过克隆
答
我的理解是,树型视图不记得是否以前扩大了,只要你执行你的查询?考虑将“IsExpanded”属性添加到“Equipment”类中,然后让TreeViewitem的IsExpanded属性绑定到视图模型的属性。