ユーザーが特定のListBox
アイテムをシングルクリックしたときに、いくつかのコードを実行したいと思います。私のセットアップはListBox
カスタムItemsPanelTemplate
(PavanのElementFlow)を使用しています。入ってくる位置データに基づいて、MouseLeftButtonDown
どのアイテムがクリックされたかを知る方法はありますか?これは、カスタムによって少し難しくなります(または混乱します)ItemsPanelTemplate
。
質問する
5810 次
1 に答える
12
ItemContainerStyleを作成し、その中にEventSetterを指定できます。
<ListBox>
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<EventSetter Event="MouseLeftButtonDown" Handler="ListBoxItem_MouseLeftButtonDown" />
...
次に、MouseLeftButtonDownのハンドラーで、「送信者」はListBoxItemになります。
また、このメソッドを使用したくない場合は、HitTestを呼び出して、指定した位置にあるVisualオブジェクトを見つけることができます。
HitTestResult result = VisualTreeHelper.HitTest(myCanvas, pt);
ListBoxItem lbi = FindParent<ListBoxItem>( result.VisualHit );
public static T FindParent<T>(DependencyObject from)
where T : class
{
T result = null;
DependencyObject parent = VisualTreeHelper.GetParent(from);
if (parent is T)
result = parent as T;
else if (parent != null)
result = FindParent<T>(parent);
return result;
}
于 2009-08-26T16:01:32.440 に答える