我正在实施一个自定义MultiSelectionTreeView
. 此控件继承自ItemsControl
,MultiSelectionTreeViewItem
继承自TreeViewItem
。由于庞大的数据集,我想绑定到这个我VirtualizationStackPanel
用作它的主机的控件。
我将TreeViewItems IsSelected
道具绑定到 ViewModelClassIsSelected
属性。当我在树中向下滚动时,所选项目离开视口,并且IsSelected
属性设置为 false(由于虚拟化,MultiSelectionTreeViewItems 与树断开连接)。当我回滚一个新的项目容器(MultiSelectionTreeViewItem)时,它的 IsSelected 属性根据 ViewModel 设置为 true。
现在,我无法确定是否发生 Selected 事件是因为容器项从/返回到视口,或者模型或视图模型层发生了变化。
更糟糕的是我无法设置断开连接项目的 IsSelected 属性。例如,使用 Shift 选择来获得更多向下滚动的项目。
我无法在我的控件实现中访问 viewmodel 类。
任何想法?