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?