ListBoxItem крадет щелчки мыши из ListBox - PullRequest
1 голос
/ 29 марта 2012

Я использую MouseBindings в стиле моего ListBoxItem.

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

В частности, я использую команду LeftClick для запуска команды в модели представления.Проблема в том, что элемент не выбирается в ListBox, потому что событие мыши не попадает в список.Так есть ли способ передать событие в родительский элемент управления (ListBox)?

Я могу заставить эту вещь работать, если я использую триггер взаимодействия в ListBox для SelectionChanged, но проблема заключается в повторном нажатииуже выбранный элемент не будет запускать событие, как следует из названия.И когда в моем списке есть только один элемент, который создает проблему.

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

Есть идеи?

1 Ответ

1 голос
/ 18 апреля 2012

Очевидно, 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...