0

我必须在窗口中查看树视图。两个树视图都绑定到一个可观察的集合“ReportStructure”。

两个树视图都显示了可观察集合的树级分层结构。我使用一个树视图,T1。选择我想在第二个树视图 T2 中显示的节点。

第一个树视图在每个叶子上都有复选框,当我选中或取消选中叶子时,它会在 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。

我的问题是,当我重新查询 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 而不传递克隆的可能性

4

1 回答 1

0

我的理解是 TreeViewItem 不记得它是否在您执行重新查询时之前被扩展过?考虑将“IsExpanded”属性添加到“设备”类,然后将 TreeViewitem 的 IsExpanded 属性绑定到视图模型的属性。

于 2012-07-06T18:16:21.430 回答