我在寫一個控件來探索一個可以動態創建的樹結構。 這個控件看起來很像一個資源管理器窗口,「CurrentItem」是打開的文件夾,一些「ChildrenItems」是子文件夾或文件。ListBox是否保留每個ItemsSource的CollectionViewSource?
要顯示ChildrenItems,我使用了一個ListBox。當我點擊一個子項時,我將新的CurrentItem設置爲子項,並更新ChildrenItems(沿樹向下)。
所以從技術上講,我經常修改ListBox的ItemsSource屬性。
我也有像「上」,「返回」,「根」一些命令等
我有一些問題,與「上」命令,並注意到,當我改變將列表框的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,它被重用,因此保留了選定的項目。這可能嗎?
感謝您的見解。