2017-04-07 2 views
1

Ich habe eine Listbox, die aus einem benutzerdefinierten Typ zu einer beobachtbaren Sammlung bindet, die jedes Element durch meine Datenvorlage zeigt:WPF Maus Bindung an Listbox Artikel Vorlage Uneinheitliche

<ListBox x:Name="ListBox" Style="{StaticResource CustomListBox}" ItemsSource="{Binding HandStats}" Height="410" Width="150" > 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
        <StackPanel Orientation="Vertical"> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Text="{Binding HoleCards[0].CardParts.Value}" Margin="2"/> 
          <Image Source="{Binding HoleCards[0].SuitImagePath}" Width="10" Height="10" Margin="2"/> 
          <TextBlock Text="{Binding HoleCards[1].CardParts.Value}" Margin="2"/> 
          <Image Source="{Binding HoleCards[1].SuitImagePath}" Width="10" Height="10" Margin="2"/> 
         </StackPanel> 
         <StackPanel Orientation="Horizontal"> 
          <TextBlock Text="Runs:" Margin="2"/> 
          <TextBlock Text="{Binding NumberOfRuns}" Margin="2"/> 
          <TextBlock Text="Players:" Margin="2"/> 
          <TextBlock Text="{Binding NumberOfPlayers}" Margin="2"/> 
         </StackPanel> 
         <StackPanel.InputBindings> 
          <MouseBinding Gesture="LeftClick" Command="{Binding Path=DataContext.PopulateReport, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" 
              CommandParameter="{Binding ElementName=ListBox, Path=SelectedItem}"/> 
         </StackPanel.InputBindings> 
        </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate>   
</ListBox> 

Bild meiner Listbox: http://imgur.com/a/QGz8z

ideal

Nun, wenn ich irgendwo im Stapel Platte für jedes Element klicken, wird das Element ausgewählt werden und der Befehl gefeuert wird. Aber mein Problem ist, dass die Objektauswahl und das Auslösen des Befehls nicht so funktioniert, wie es sollte.

Der Artikel wird nur, wenn ich zwischen den Textblöcken oder in den leeren Raum auf der rechten Seite der Textblöcke, aber der Befehl wird nicht gefeuert klicken in ausgewählten geworden. Der Befehl wird nur ausgelöst, wenn ich zuerst das Element ausgewählt habe und dann erneut auf einen der Textblöcke oder eines der Bilder klicke.

Ich bin immer noch ganz neu in WPF so, wenn ich nicht viel Sinn machen lass es mich wissen, danke im voraus :)

Antwort

0

Versuchen Sie, die Background Eigenschaft des StackPanel-Transparent einzustellen:

<StackPanel Orientation="Vertical" Background="Transparent"> 
... 

Wenn es nicht ein Background hat die Click-Ereignisse werden nicht angehoben werden, wie erwartet.

+0

versuchte, diese mit der äußeren Stapelplatte und dann den inneren Platten, aber immer noch ohne Erfolg. Ich habe mein Problem jetzt anders gelöst. Ich werde diesen Beitrag mit meiner Antwort aktualisieren – rejy11

1

Statt Eingabebindungen die Verwendung habe ich beschlossen, eine andere Methode zu verwenden. Ich habe eine Eigenschaft in meiner VM erstellt und diese an das ausgewählte Element meiner Liste gebunden. So jetzt jedes Mal, wenn ich ein neues Element auswähle (was jetzt perfekt funktioniert), wird die Eigenschaft in meinem vm aktualisiert. Einfach!