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>

参考技术A <ListBoxItem.InputBindings>

<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添加单机时间

WPF ListBoxItem 在自定义项中检测 IsMouseOver

带有按钮的 WPF 列表框样式

wpf中我在每个listboxItem里都加了一个按钮,点击按钮后,如何知道点击的按钮是属于哪个item呢?

将 WPF 控件设置为扩展以填充可用空间,仅此而已

获取 ListBoxItem 的索引 - WPF