ウィンドウでツリービューを表示する必要があります。両方のツリービューは、監視可能なコレクション「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を更新する可能性を失います。