zoukankan      html  css  js  c++  java
  • WPF ListView DoubleClick

     <ListView   x:Name="TrackListView"  MouseDoubleClick="MouseDoubleClick"
                      SelectionChanged="SelectionChanged" >

    ListView中的MouseDoubleClick双击时不触发SelectionChanged的选中事件,获取不到当前双击的Item,即this.TrackListView.SelectedItem中的数据对象为null。

    protected void MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
          var item = this.TrackListView.SelectedItem as Track;//is null

         //this.TrackListView.SelectedItem is null
    }

    如果双击时刚好触发了SelectionChanged事件,那么当前listView中的selectItem是有数据的,那怎么解决不触发时而又想获取到当前双击Item数据对象呢,方法如下:

    <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)
    {
        var track = ((ListViewItem) sender).Content as Track; //Casting back to the binded Track
    }

  • 相关阅读:
    [转] 一文读懂 HTTP/2 特性
    设置VS2019 支持C++17标准
    switch case 字符串表达式支持
    在Fabric实现类似Uniswap的去中心化交易所
    数据上链的原则与方式
    2.4g无线私有协议透传方案特色梳理
    无线数字麦克风解决方案小结
    高保真的音频编解码器模块及方案解析
    基于wifi的音频采集及处理解决方案小结
    基于智能降噪的助听器解决方案解析
  • 原文地址:https://www.cnblogs.com/ligl/p/5629802.html
Copyright © 2011-2022 走看看