欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

WPF对ListView的ListViewItem添加双击事件

程序员文章站 2022-03-07 17:03:43
...

最近做了一个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));
}

转载于:https://my.oschina.net/huxuanhui/blog/37685