wpf listboxitem 双击事件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf listboxitem 双击事件相关的知识,希望对你有一定的参考价值。
@Mickal小米
如何实现 listboxitem 添加双击事件,并且个事件可以触发命令
写在cs里的那种添加双击事件不太符合MVVM的规范貌似所以希望就是在样式里完成
<i:Interaction.Triggers>
<i:EventTrigger EventName="DoubleClick">
<i:InvokeCommandAction Command="Binding XXXXCmd"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<MouseBinding Command="Binding Path=FireRelatedCommand, RelativeSource=RelativeSource AncestorType=ListBox"
CommandParameter="Binding YourParameter" MouseAction="LeftDoubleClick"/>
</ListBoxItem.InputBindings>追问
找不到就去看ListBox是不是有这个命令啊,snoop会用吗?
比如你用snoop发现这个command在ListBox的DataContext里面,那就Binding DataContext.HistoryQueryCmd, ....
方法给你了,其他的可以灵活一点
获取 ListBoxItem 的索引 - WPF
【中文标题】获取 ListBoxItem 的索引 - WPF【英文标题】:Get index of ListBoxItem - WPF 【发布时间】:2011-08-08 15:13:00 【问题描述】:如何获取ListBoxItem
的索引?
ListBox
已通过 XmlDataProvider
绑定到 XML 节点集合。
【问题讨论】:
【参考方案1】:我有一个类似的问题,得到了here的回答
基本上,您将 ListBox 的 AlternationCount
设置为非常高的值,并绑定到每个项目上的 AlternationIndex
<ListBox AlternationCount="100">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="Binding RelativeSource=RelativeSource Mode=TemplatedParent,
Path=(ItemsControl.AlternationIndex)" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
【讨论】:
@Greg:同意,但这是迄今为止我发现使用 ListBox 做到这一点的唯一方法。我希望他们在未来的 WPF 版本中添加一个属性 @punker76 我认为 ListBoxes 默认是虚拟化的,所以不应该这样 @Rachel 好的,虚拟化是默认设置,但交替索引不起作用。我创建了一个小项目,尝试向下和向上滚动,您将看到 jkarger.de/Wpf***SpielWiese.exe (.net 4)【参考方案2】:可以从ItemContainerGenerator
获取ListBoxItem
的索引:
listBox.ItemContainerGenerator.IndexFromContainer(listBoxItem);
【讨论】:
【参考方案3】:属性SelectedIndex
可以工作。这完全取决于您如何进行绑定
您可能希望将 SelectedIndex
依赖属性绑定到连接到它的数据上下文的对象的某些属性,例如
<ListBox SelectedIndex="Binding MySelectedIndex" ItemsSource="Binding MyItems"/>
但你显然可以这样做
<ListBox SelectedIndex="Binding MySelectedIndex">
<ListBoxItem>1</ListBoxItem>
<ListBoxItem>2</ListBoxItem>
<ListBoxItem>3</ListBoxItem>
<ListBoxItem>4</ListBoxItem>
</ListBox>
【讨论】:
以上是关于wpf listboxitem 双击事件的主要内容,如果未能解决你的问题,请参考以下文章
WPF ListBoxItem 在自定义项中检测 IsMouseOver