1

私はWPF ListViewを持っています。この ListView には n 個の項目が含まれます。

ユーザーが何かをリストビューにドラッグすると、ListView の AdornerLayer に水平バーが表示され、アイテムが挿入されるインデックスが表示されます。

また、listView を自動スクロールしています。ScrollViewer.CanContentScroll="False" ListViewItems は部分的に表示されるためです。

私が抱えている問題は、描画しているインジケーター バーが、ListViewItem が上部にあり、部分的にしか表示されていないときに、ListView の境界の外側に表示されることです (上記の場合)。

バーを描画するトリガーは、現在ホバリングしている ListViewItem を取得し、その上限値を取得して線を描画することです。ListViewItem がまだ完全に表示されていない場合、バーは ListView 自体の上に描画され、明らかに奇妙に見えます。

概要: 特定の ListViewItem が ListView で部分的にしか表示されないかどうかを判断しようとしています。

この場合、コードはそれほど重要ではありませんが、必要に応じて投稿できます。

ありがとう

4

1 に答える 1

0

ScrollViewer.VerticalOffsetおそらく、リストビュー自体に対するまたはScrollViewer.ViewPortHeightとリストビューアイテムの場所の組み合わせを使用できます

itemPosition = ListViewItem.TransformToAncestor(ListView).Transform(new Point(0, 0));

完全に表示されているかどうかを確認するには、次の手順を実行する必要があります

itemPosition.Y + itemHeight - viewPortHeight

次に、その値がまたはの間にあるitemHeight場合-viewPortHeight、それは表示されます

または、おそらく少しきれいなものは何ですか:

(-itemPosition.Y < itemHeight && itemPosition.Y < viewPortHeight)
于 2013-02-07T17:15:00.773 に答える