Du kannst das benutzen! Kein Rad gestohlen.
%Vor%Ich habe eine ListBox. Es hat internen ScrollViewer, also kann ich ListBox Inhalt mit dem Mausrad scrollen. Es funktioniert gut, bis ich Artikelvorlage, die eine andere ListBox enthält (tatsächlich habe ich 4 verschachtelte ListBoxen =)). Problem ist, dass der ScrollViewer der internen ListBox Wheeling-Ereignis stiehlt. Gibt es eine einfache Möglichkeit, dieses Verhalten zu verhindern?
Ich hatte ListBox mit ItemContainerStyle wie folgt:
%Vor%Wie kann ich den Stil für den Artikelrahmen von ItemContainer in solchen Ressourcen festlegen? Wie ich weiß, ContentPresenter ist Artikel Container von ItemsControl. Aber Border hat es nicht, also kann ich es nicht stylen.
Sie können ScrollViewer
aus einem ListBox
entfernen, indem Sie die Kontrollvorlage in etwas viel Einfacheres ändern:
Ich frage jedoch den Wert der ListBoxen verschachteln. Denken Sie daran, dass jedes ListBox
ein Selektor ist und ein Konzept hat, welches Element "ausgewählt" ist. Macht es wirklich Sinn, einen ausgewählten Gegenstand innerhalb eines ausgewählten Gegenstandes innerhalb eines ausgewählten Gegenstandes zu haben?
Ich würde vorschlagen, das "innere" ListBoxes
in das einfache ItemsControls
zu ändern, damit die verschachtelten Listen keine ausgewählten Elemente haben können. Das würde für eine viel einfachere Benutzererfahrung sorgen. Möglicherweise müssen Sie die innere ItemsControls
noch auf die gleiche Weise neu beschriften, um die Bildlaufleisten zu entfernen, aber zumindest wird der Benutzer nicht verwirrt, welches Element "ausgewählt" ist.
Sie können das Stehlen von Scroll-Ereignissen deaktivieren, indem Sie scroll-Ereignisse in XAML abfangen:
%Vor%und im Code hinterher erneut veröffentlichen:
%Vor%Die Lösung ist genau für ListBox, sie hat mir mit ListView geholfen.
Ich habe diese Lösung hier gefunden:
Tags und Links wpf listbox xaml scrollviewer