WPF ListView DoubleClick
2016-06-30 22:23
190 查看
<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
}
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
}
相关文章推荐
- Spring +Mybatis 拦截器配置
- List<T>集合导出csv方法参考,通过增加自定义的属性控制输出的字段。
- Android AES加密工具类实现(基础回顾)
- C++学习之路2
- GCD概念
- Problem4-1012
- LeetCode - 142. Linked List Cycle II
- 关于反爬虫,看这一篇就够了
- new,delete总结
- C++学习之路
- 笔试题目(1)
- 线程安全与线程不安全的区别
- 图解Linux命令之--pwd命令
- Struts2和SpringMVC
- Android的消息机制Handler详解
- 如何循环获取html的值,并拼写到json/json,求value所对应key的值
- js实现编码,解码
- 2016年中总结
- 按位反转无符号字符
- Linux工作队列实现机制