WPF: ListBox Deaktivieren, aber Bildlauf aktivieren
Wurde, schlug mein Kopf gegen diese ganzen Vormittag.
Grundsätzlich habe ich eine listbox, und ich will halten die Menschen von der änderung der Auswahl bei einer lang andauernden Prozess, aber es Ihnen ermöglichen, noch scrollen.
Lösung:
Alle Antworten waren gut, ging ich mit dem schlucken Maus-events, da war das geradeaus nach vorne. Ich verkabelte PreviewMouseDown und PreviewMouseUp auf ein einzelnes Ereignis, die überprüft, mein backgroundWorker.IsBusy, und wenn es gesetzt war, wird die Eigenschaft IsHandled auf der event-args zu wahren.
InformationsquelleAutor Matt Briggs | 2009-02-09
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der trick ist, nicht wirklich deaktivieren. Deaktivieren sperren Sie alle Nachrichten aus der scroll-box.
Während der langen operation, Grau, der text in der Liste mit seinen .ForeColor-Eigenschaft und schlucken alle Maus-Klicks. Dies simuliert das deaktivieren der Steuerung und lassen Sie scrollen ungehindert.
Wenn man sich in die Steuerung template der ListBox, gibt es eine Bildlaufleiste und ItemsPresenter innen. So Stellen Sie den ItemsPresenter Behinderte und erhalten Sie diese leicht. Verwenden Sie die Balg-Stil auf die ListBox, und Sie sind gut zu gehen.
Auf die ListBox verwenden Sie die Style -
sorry, es hat fast zwei Jahre gewesen, aber ich denke, dass diese Lösung mit DataTrigger ist sogar noch einfacher. So deaktivieren Sie eine datengebundene ListBox-Element basierend auf einem property-Wert?
Fand ich, dass die Anwendung eines Behinderten ListBox in ein ScrollViewer-Element, mit auto-scrolling aktiviert, gibt den gewünschten Effekt.
Während es für Silverlight, vielleicht in diesem blog-Beitrag möchte Ihnen helfen, in die richtige Richtung gehen? Silverlight-Keine Auswahl-Listenfeld und ViewBox
Habe ich diese Lösung, es ist wirklich einfach und funktioniert perfekt:
Für jeden
SurfaceListBoxItem item
Sie in dieListbox
, dies zu tun:Dies funktioniert für mich am besten. Es ist einfach, und der ganze code in der XAML-die ist IMO sehr ordentlich.
Eine weitere option eine überlegung Wert, ist das deaktivieren der ListBoxItems. Dies kann getan werden durch einstellen der ItemContainerStyle wie im folgenden Codeausschnitt dargestellt.
Wenn Sie nicht möchten, dass der text Grau sein, können Sie angeben, deaktiviert Farbe durch das hinzufügen einer Bürste, um den Stil, die Ressourcen mit den folgenden Schlüssel: {x:Static SystemColors.GrayTextBrushKey}. Die andere Lösung wäre das überschreiben der ListBoxItem-control-Vorlage.
Diese Frage ist so ziemlich das gleiche wie dieses: Es ist nicht die ListBox.SelectionMode="None", gibt es eine andere Möglichkeit zum deaktivieren der Auswahl in einer listbox? und meine Antwort ist die gleiche.
Fand ich eine sehr einfache und unkomplizierte Lösung, für mich zu arbeiten, ich hoffe, es würde für Sie tun, als auch
Eine vollständige Antwort mit http://www.codeproject.com/Tips/60619/Scrollable-Disabled-ListBox-in-WPF
Stil:
Klasse
Dann statt setted IsEnabled auf das Listenfeld, verwenden IsEnabledWithScroll statt. Scrollen funktioniert, wenn die listbox aktiviert oder deaktiviert ist.
Scheint es viele Möglichkeiten, um der Haut diese Besondere Katze. Ich fand, dass durch die Festlegung
IsHitTestVisible
auf dieItemsContainerStyle
im XAML-ich bekam genau das was ich gebraucht habe: