2012-07-06 107 views
0

我必须在一个窗口中查看树视图。这两个树视图都绑定到一个可观察的集合“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,而没有经过克隆

回答

0

我的理解是,树型视图不记得是否以前扩大了,只要你执行你的查询?考虑将“IsExpanded”属性添加到“Equipment”类中,然后让TreeViewitem的IsExpanded属性绑定到视图模型的属性。