ListBoxItem窃取从列表框中点击鼠标

我在我的ListBoxItem的样式中使用MouseBindings。

<MouseBinding MouseAction="LeftClick" Command="{Binding    
DataContext.ViewWorkingImprovementAssetCommand}" CommandParameter="{Binding}"/>

具体来说,我使用LeftClick命令在视图模型中激发一个命令。 问题是该项目没有在列表框中被选中,因为鼠标事件没有进入列表框。 那么有没有办法将事件传递给父控件(ListBox)?

如果我在SelectionChanged的ListBox上使用交互触发器,我可以使这个工作起作用,但问题是重新单击已经选择的项目将不会像名称所示激发事件。 而当我的名单只有一个问题的项目。

<i:Interaction.Triggers>
    <i:EventTrigger EventName="SelectionChanged">
         <i:InvokeCommandAction Command="{Binding ViewWorkingImprovementAssetCommand}" 
                                CommandParameter="{Binding ElementName=RemovedImprovementAssetsListBox, Path=SelectedItem}" />
    </i:EventTrigger>
</i:Interaction.Triggers>

有任何想法吗?


显然MouseBinding窃取了事件并且不会传递它。 我使用我们解决方案中已有的AttachedBehaviors解决了这个问题。 我认为从这个http://marlongrech.wordpress.com/2008/12/13/attachedcommandbehavior-v2-aka-acb/

最终的解决方案

<cmd:CommandBehaviorCollection.Behaviors>
<cmd:BehaviorBinding Event="MouseLeftButtonDown" 
                    Command="{Binding  RelativeSource={RelativeSource FindAncestor,  AncestorType=UserControl, AncestorLevel=1}, Path=DataContext.ViewWorkingImprovementAssetCommand}" 
                    CommandParameter="{Binding}"/>
</cmd:CommandBehaviorCollection.Behaviors>
链接地址: http://www.djcxy.com/p/59897.html

上一篇: ListBoxItem stealing Mouse clicks from ListBox

下一篇: SelectionChanged Event for ListBox in panorama.ItemTemplate for Windows Phone?