動的に作成できるツリー構造を探索するためのコントロールを作成しています。このコントロールはエクスプローラー ウィンドウによく似ており、"CurrentItem" は開いているフォルダーで、一部の "ChildrenItems" はサブフォルダーまたはファイルです。
ChildrenItems を表示するには、ListBox を使用しています。子アイテムをクリックすると、新しい CurrentItem が子アイテムになるように設定し、ChildrenItems を更新します (ツリーを下っていきます)。
技術的には、ListBox の ItemsSource プロパティを頻繁に変更します。
「Go Up」、「Go Back」、「Root」などの標準コマンドもいくつかあります
「Go Up」コマンドに問題があり、リストボックスの ItemsSource プロパティを以前に設定した ItemsSource に変更すると、ListBox の SelectedItem が古い ItemsSource が使用されたときに選択された古い項目にリセットされることに気付きました.
たぶん、少し例がより明確になるでしょう:私がこのツリー構造を持っているとしましょう:
- Root
- Node 1
- SubNode 1a
- SubNode 1b
- Node 2
- Node 3
「CurrentItem」をルートとして設定して、この構造の調査を開始します。これは、ListBox ItemsSource が「Node1,Node2,Node3」に設定されていることを意味します。
次に、「Node1」をクリックします (これにより、SelectedItem が変更されます)。次に、私のコントロールは「CurrentItem」をこの新しい SelectedItem に設定し、ListBox ItemsSource を「SubNode1a、SubNode1b」に設定します。
その後、「Go Up」コマンドを使用すると、「CurrentItem」は「Root」にリセットされ、ListBox ItemsSource は「Node1、Node2、Node3」にリセットされますが、違いがあります。「Node1」が選択されています。
これは、再利用される CollectionViewSource を考えさせ、選択したアイテムを保持します。これは可能ですか?
あなたの洞察に感謝します。