Rechtsklick im TreeView

  • WPF

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von pts.

    Rechtsklick im TreeView

    Moin,

    ich habe hier ein TreeView mit diversen Daten. Ich habe Probleme, einen Rechtsklick auf die Items umzusetzen.

    Problem: Wenn ich ich Element X mit einem Linksklick markiere, dann einen Rechtsklick auf Element Y mache, bleibt Element X markiert. Nun lese ich, um herauszufinden, welches Element rechts geklickt wurde, einfach die

    VB.NET-Quellcode

    1. .SelectedItem
    aus. Die liegt aber ungünsigerweise noch auf Element X, weil der Rechtsklick Element Y nicht markiert hat.

    Gibt es eine elegantere Lösung, als immer ein Element erst links dann rechts zu klicken?

    Gruß und Dank!
    Hallo und willkommen im Forum.

    Naja, da dies ein eher unübliches verhalten ist muss man hier etwas tricksen.

    z.b.:

    XML-Quellcode

    1. <TreeView x:Name="testTreeview">
    2. <TreeView.ItemContainerStyle>
    3. <Style TargetType="TreeViewItem">
    4. <EventSetter Event="TreeViewItem.MouseRightButtonDown" Handler="TreeViewItem_MouseRightButtonDown"/>
    5. </Style>
    6. </TreeView.ItemContainerStyle>
    7. <TreeView.ContextMenu>
    8. <ContextMenu DataContext="{Binding PlacementTarget, RelativeSource={RelativeSource Self}}">
    9. <MenuItem Header="{Binding SelectedItem.Header}"/>
    10. </ContextMenu>
    11. </TreeView.ContextMenu>
    12. <TreeViewItem Header="Test1"/>
    13. <TreeViewItem Header="Test2"/>
    14. <TreeViewItem Header="Test3"/>
    15. <TreeViewItem Header="Test4"/>
    16. </TreeView>


    und:

    VB.NET-Quellcode

    1. Private Sub TreeViewItem_MouseRightButtonDown(sender As Object, e As MouseEventArgs)
    2. Dim item = DirectCast(sender, TreeViewItem)
    3. If item IsNot Nothing Then item.Focus() : e.Handled = True
    4. End Sub


    Hoffe das Hilft dir, wenn du Fragen hast kannst du dich gerne melden.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    @pts
    Normalerweise gibt man bescheid ob etwas geholfen hat und schliesst einen Thread auch ab wenn das Problem damit gelöst wurde.
    Mal ganz abgesehen davon das man sich bedankt. Sollte dies nicht die Lösung sein kann man dies auch bekanntgeben, das Hilft anderen die hier vorbeischaun.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##