カスタムを実装していますMultiSelectionTreeView
。このコントロールは から継承されItemsControl
、からMultiSelectionTreeViewItem
継承されTreeViewItem
ます。VirtualizationStackPanel
膨大なデータ セットがあるため、ホストとして使用するこのコントロールにバインドしたいと考えています。
TreeViewItems IsSelected
プロップを ViewModelClassIsSelected
プロパティにバインドしました。ツリーを下にスクロールすると、選択したアイテムがビューポートから外れ、IsSelected
プロパティが false に設定されます (仮想化により、MultiSelectionTreeViewItems がツリーから切断されたため)。スクロール バックすると、新しいアイテム コンテナー (MultiSelectionTreeViewItem) が作成され、その IsSelected プロパティが ViewModel に従って true に設定されます。
現時点では、コンテナー項目がビューポートから出て行った/ビューポートに戻ったために Selected イベントが発生したのか、モデルまたはビューモデル レイヤーに変更があったのかを判断できません。
さらに悪いことに、切断されたアイテムの IsSelected プロパティを設定できません。たとえば、下にスクロールしてより多くのアイテムを選択するには、Shift 選択を使用します。
コントロールの実装でビューモデル クラスにアクセスできません。
何か案が?