2012-03-29 15 views
0

Ich verwende MouseBindings im Stil meiner ListBoxItem.ListBoxItem stehlen Mausklicks von ListBox

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

Insbesondere verwende ich den LeftClick-Befehl, um einen Befehl im Ansichtsmodell auszulösen. Das Problem ist, dass das Element in der ListBox nicht ausgewählt wird, weil das Mausereignis nicht in das Listenfeld gelangt. Gibt es also eine Möglichkeit, das Ereignis an das übergeordnete Steuerelement (ListBox) zu übergeben?

Ich kann dieses Ding zum Funktionieren bringen, wenn ich einen Interaktionstrigger auf der ListBox für SelectionChanged verwende, aber das Problem ist ein erneutes Klicken auf ein bereits ausgewähltes Element wird das Ereignis nicht auslösen, wie der Name suggeriert. Und wenn meine Liste nur ein Element enthält, das ein Problem darstellt.

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

Irgendwelche Ideen?

+0

Ich denke, wir sehen müssen, die XAML – Phil

+0

Ihre eigene Frage richtig Antwort und akzeptieren Sie die Antwort, Antworten gehören nicht in Frage. –

Antwort

0

Offensichtlich stiehlt MouseBinding das Ereignis und wird es nicht weitergeben. Ich löste es mit AttachedBehaviors, die wir bereits in unserer Lösung hatten. Ich denke, genommen von dieser http://marlongrech.wordpress.com/2008/12/13/attachedcommandbehavior-v2-aka-acb/

finalen Code Lösung

<cmd:CommandBehaviorCollection.Behaviors> 
<cmd:BehaviorBinding Event="MouseLeftButtonDown" 
        Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl, AncestorLevel=1}, Path=DataContext.ViewWorkingImprovementAssetCommand}" 
        CommandParameter="{Binding}"/> 
</cmd:CommandBehaviorCollection.Behaviors> 
Verwandte Themen