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