0

ウィンドウでツリービューを表示する必要があります。両方のツリービューは、監視可能なコレクション「ReportStructure」にバインドされています。

両方のツリービューは、監視可能なコレクションのツリーレベルの階層構造を示しています。1つのツリービューT1を使用します。2番目のツリービューT2に表示するノードを選択します。

最初のツリービューには各リーフにチェックボックスがあり、リーフをオンまたはオフにすると、T2で表示または非表示になります。私がそれをするために、私はこのようにバインドされたコレクションビューを再クエリする必要があります

  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 が以前に展開されたかどうかを覚えていませんか? 「Equipment」クラスに「IsExpanded」プロパティを追加し、TreeViewitem の IsExpanded プロパティをビューモデルのプロパティにバインドすることを検討してください。

于 2012-07-06T18:16:21.430 に答える