データバインディングを使って ListView にデータを表示した状態で、ListView の項目がダブルクリックされたとき、その項目を取得するには ListViewItem の MouseDoubleClick イベントをハンドルすればいい。イベントハンドラの設定は、スタイルを使ってまとめて設定すると楽。
<ListView ItemsSource="{Binding Path=People}"> <ListView.Resources> <Style TargetType="{x:Type ListViewItem}"> <EventSetter Event="MouseDoubleClick" Handler="ListView_MouseDoubleClick"/> </Style> </ListView.Resources> <!-- ビューは省略 --> </ListView>
private void ListView_MouseDoubleClick(object sender, MouseEventArgs e) { // sender がダブルクリックされた項目 ListViewItem targetItem = (ListViewItem)sender; // データバインディングを使っているなら、 // DataContext からデータを取得できる Person p = (Person)targetItem.DataContext; }