Wie kann ich verhindern das Listenfeld von der Auswahl ein Element, wenn ich mit der rechten Maustaste darauf klicken?
Der schwierige Teil ist, dass jedes Element hat einen ContextMenu
dass ich immer noch öffnen möchten, wenn Sie mit der rechten Maustaste geklickt (ich will es nicht auswählen).
In der Tat, wenn es macht die Dinge einfacher, ich will nicht alle automatische Auswahl, so dass, wenn es irgendeine Weise, die ich deaktivieren kann und es völlig, die in Ordnung sein würde.
Ich überlege gerade die Umstellung auf einen ItemsControl
tatsächlich, so lange, wie ich bekommen kann, Virtualisierung und scrollen, mit ihm zu arbeiten.
InformationsquelleAutor devios1 | 2010-06-09
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nicht möchten, die Auswahl wäre, würde ich auf jeden Fall gehen Sie mit ItemsControl (ListBox nicht. Virtualisierung und scrollen beide können verwendet werden, mit einem einfachen ItemsControl, solange Sie in der Vorlage.
Auf der anderen Seite, wenn Sie brauchen, Auswahl aber einfach nicht wollen, die Rechte Maustaste zu wählen, der einfachste Weg ist wahrscheinlich, behandeln die PreviewRightMouseButtonDown Veranstaltung:
Der Grund, warum dies funktioniert, ist, dass ListBoxItem Auswahl geschieht auf der Maus unten aber Kontext-Menü öffnen geschieht auf der Maus bis. So beseitigen Sie die Maus gedrückt Ereignis während der preview-phase, die Ihr problem löst.
Allerdings funktioniert dies nicht, wenn Sie möchten, Maustaste gedrückt wird, werden andernorts in ListBox (wie in einem Steuerelement innerhalb eines Elements). In diesem Fall wird der einfachste Weg ist wohl zur Unterklasse ListBoxItem, es zu ignorieren:
Können Sie entweder explizit konstruieren diese ListBoxItems in Ihrer ItemsSource oder Sie können auch Unterklasse ListBox verwenden Sie Ihre eigenen Objekte automatisch:
FYI, hier sind einige Lösungen, die funktionieren nicht zusammen mit Erklärungen, warum Sie nicht funktionieren: