WPF对ListView的ListViewItem添加双击事件

最近做了一个wpf的应用程序,其中主页面是使用平铺的卡片方式展示的,双击卡片的时候,可以打开卡片相关的详细。

问题出现了,在双击卡片的时候会崩溃,因为没有选中任何卡片的时候,双击事件把整个DataView作为参数传递。

找到一个解决方案,就是只对卡片设置双击事件,由于卡片是 Template 需要用到EventSetter,代码如下:

<UserControl.Resources>
    <Style x:Key="itemstyle" TargetType="{x:Type ListViewItem}">
        <EventSetter Event="MouseDoubleClick" Handler="HandleDoubleClick" />
    </Style>
</UserControl.Resources>

<ListView Name="TrackListView" ItemContainerStyle="{StaticResource itemstyle}">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Title" Width="100" HeaderTemplate="{StaticResource BlueHeader}" DisplayMemberBinding="{Binding Name}"/>
            <GridViewColumn Header="Artist" Width="100" HeaderTemplate="{StaticResource BlueHeader}" DisplayMemberBinding="{Binding Album.Artist.Name}" />
        </GridView>
    </ListView.View>
</ListView>

protected void HandleDoubleClick(object sender, MouseButtonEventArgs e)
{
    this.RaiseEvent(new RoutedEventArgs(ItemDoubleClickEvent, itemList.SelectedItem));
}

你可能感兴趣的:(ListView,WPF,DoubleClick,ListViewItem,EventSetter)