2009-07-09 5 views
2

Je souhaite placer une commande sur un ListBoxItem. Le ListBoxItem utilise un DataTemplate composé d'un StackPanel (contenant un Image et un TextBlock, les deux utilisant la liaison). Je veux que le double-clic sur ce ListBoxItem déclenche la commande.WPF: InputBindings sur un StackPanel

J'ai essayé:

<DataTemplate> 
    <StackPanel> 
     <StackPanel.Resources> 
      <CommonUI:CommandReference x:Key="DoubleClickCommand" Command="{Binding Path=DefaultCommand}" />         
     </StackPanel.Resources> 
     <StackPanel.InputBindings> 
      <MouseBinding Gesture="LeftDoubleClick" Command="{StaticResource DoubleClickCommand}" /> 
     </StackPanel.InputBindings> 
     <Image Source="{Binding Path=Thumbnail, IsAsync=True}" IsHitTestVisible="False"/> 
     <TextBlock Text="{Binding Path=Name}" IsHitTestVisible="False"> 
    </StackPanel> 
</DataTemplate> 

J'ai aussi essayé de mettre les ressources de commandement sur un StackPanel contenant ce StackPanel, sans aucun changement. Je suis certain de ma liaison parce que quand je mets la partie InputBindings sur le TextBlock, cela fonctionne.

Merci

Répondre

2

Mon code ressemble finalement à ceci:

<DataTemplate> 
    <StackPanel Orientation="Vertical"> 
     <StackPanel.Resources> 
      <CommonUI:CommandReference x:Key="DoubleClickCommand" Command="{Binding Path=DefaultCommand}" /> 
     </StackPanel.Resources> 
     <StackPanel.InputBindings> 
      <MouseBinding Gesture="LeftDoubleClick" Command="{StaticResource DoubleClickCommand}" /> 
     </StackPanel.InputBindings> 
     <Image Source="{Binding Path=Thumbnail, IsAsync=True}" /> 
     <TextBlock Text="{Binding Path=Name}" /> 
    </StackPanel> 
</DataTemplate> 

Merci de toute façon, M. Poulin.

1

Essayez gérer l'événement dans la ListBox au lieu du StackPanel:

<ListBox> 
    <ListBox.Resources> 
    <CommonUI:CommandReference x:Key="DoubleClickCommand" Command="{Binding Path=DefaultCommand}" /> 
    </ListBox.Resources> 
    <ListBox.InputBindings> 
    <MouseBinding Gesture="LeftDoubleClick" Command="{StaticResource DoubleClickCommand}" /> 
    </ListBox.InputBindings> 
    <DataTemplate> 
    <StackPanel> 
     <Image Source="{Binding Path=Thumbnail, IsAsync=True}" /> 
     <TextBlock Text="{Binding Path=Name}" /> 
    </StackPanel> 
    </DataTemplate> 
</ListBox> 
+0

Je l'ai essayé mais cela ne fonctionne pas non plus :( – Thia

+0

Cela semble fonctionner maintenant.J'ai essayé quelques choses (finissant par ressembler exactement au code que j'ai soumis dans ma question, à l'exclusion de la IsHitTestVisible = "Faux"). Merci quand même :-) – Thia