VisualTreeHelper メソッド FindElementsInHostCoordinates を使用して、指定された X および Y の位置で ListBoxItem を検索しています。ただし、X と Y の値は、関心のある ListBox だけでなく、ページ全体のポイントに関連しているように見えます (その要素をメソッドのサブツリー パラメーターに渡しているにもかかわらず)。以下では、これは ListBox から派生したカスタム コントロールを指します。
foreach (UIElement element in VisualTreeHelper.FindElementsInHostCoordinates(new Point(X, Y), this))
{
if (element is ListBoxItem)
{
int index = this.ItemContainerGenerator.IndexFromContainer(element);
break;
}
}
したがって、(0,0) は、ListBox の左上隅ではなく、プラグイン全体の左上隅を基準とします。ページ座標を ListBox 座標に変換するために、ここで自分自身 (コード内) で数学的な作業を行う必要がありますか、それとも、特定の X および Y ポイントが ListBoxItem の上にあるかどうかを判断するヒット テストを実行する他の方法はありますか?
ありがとう。