2016-07-15 7 views
0

Ich erstelle eine Rückgängig-Schaltfläche, die identisch mit Visual Studio-Schaltfläche Rückgängig funktionieren sollte. Ich möchte, dass der Benutzer in der Lage ist, mit der Maus über einen Gegenstand zu fahren, und jeder Gegenstand darüber wird ausgewählt. Beim Klicken werden alle oben genannten Elemente übergeben und Aktionen ausgeführt. Wenn der Benutzer auf die Schaltfläche selbst klickt, machen Sie das oberste Objekt rückgängig. Problem: kein Kontextmenü verwenden und keine Ahnung was ich mit wpf mache. Im Moment kann der Benutzer die Maus bewegen, aber nur das Objekt, über dem sich die Maus befindet, wird ausgewählt (der gesamte Code ist vb.net). Alle Hilfe wird geschätzt!MutliSelect ListBox im Menü

Code:

<MenuItem Header="Undo" Name="MenuUndo" IsEnabled="True"> 
    <MenuItem.Icon> 
     <Image Source="Undo.png" Width="24" Height="24" /> 
    </MenuItem.Icon> 
    <StackPanel> 
     <ListBox Name="ListBoxUndo" HorizontalAlignment="Stretch " 
       VerticalAlignment="Stretch" Width="177" Height="100 " Margin="-33,-5,-65,-5" 
       ScrollViewer.VerticalScrollBarVisibility="Visible" IsEnabled="True" 
       SelectionMode ="Multiple"> 

      <ListBox.ItemContainerStyle> 
       <Style TargetType="ListBoxItem"> 
        <Style.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="IsSelected" Value="True"/> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </ListBox.ItemContainerStyle> 

     </ListBox>      
    </StackPanel> 

</MenuItem> 

hier ist das, was es sieht derzeit wie: enter image description here

Antwort

0

Nun, ich habe es mit Hilfe des Scroll-Rad zu arbeiten, die sowieso Art besser funktioniert! Hier ist der Code, den ich hinzugefügt habe:

Private Sub ListBoxUndo_PreviewMouseWheel(sender As Object, e As MouseWheelEventArgs) Handles ListBoxUndo.PreviewMouseWheel 
    ListBoxUndo.Focus() 
    Try 
     If e.Delta < 1 Then 
      'highlight next item 
      ListBoxUndo.SelectedItems.Add(ListBoxUndo.Items(ListBoxUndo.SelectedItems.Count)) 

     Else 
      'remove last selected item 
      ListBoxUndo.SelectedItems.Remove(ListBoxUndo.Items(ListBoxUndo.SelectedItems.Count - 1)) 
     End If 
    Catch ex As Exception 

    End Try 

End Sub