【发布时间】:2012-05-11 01:14:24
【问题描述】:
我正在编写一个控件来探索可以动态创建的树结构。 这个控件看起来很像一个资源管理器窗口,其中“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,因此保留了选定的项目。这可能吗?
感谢您的见解。
【问题讨论】:
标签: wpf listbox itemssource collectionviewsource