ListViewItem の MouseDoubleClick や KeyDown イベントをハンドルしたい場合、ListViewItem オブジェクトを生成して ListView に詰めているなら、ListViewItem オブジェクトに直接イベントハンドラを登録することができます。
しかし、データバインディングを使ってデータを設定した場合、この方法は使えません。
ではどうすればいいか?EventSetter を使えば、イベントハンドラを登録できます。
<Window x:Class="ListViewItemSample.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Grid> <Grid.Resources> <!-- ListViewItem の Style を定義 --> <Style TargetType="{x:Type ListViewItem}"> <Style.Setters> <!-- EventSetter を使ってイベントにハンドラを設定する --> <EventSetter Event="MouseDoubleClick" Handler="OnMouseDoubleClick"/> </Style.Setters> </Style> </Grid.Resources> <ListView ItemsSource="{Binding}"> <ListView.View> <GridView> <GridView.Columns> <GridViewColumn Header="名前" DisplayMemberBinding="{Binding Path=Name}"/> </GridView.Columns> </GridView> </ListView.View> </ListView> </Grid> </Window>
一括で設定できるので、こちらが便利かもしれませんね。