Anpassen des Umschaltstatus einer Umschaltfläche in wpf

8

Ich möchte den Umschaltstatus der Umschalttaste in wpf anpassen. Ich möchte ein Bild auf die Umschaltfläche einstellen, wenn es eingeschaltet ist, und ein anderes Bild einstellen, wenn es ausgeschaltet ist. Um dies zu tun, dachte ich an Trigger. So habe ich es gemacht,

%Vor%

Das obige Snippet scheint nur für zwei Elemente in der Listbox zu funktionieren. Wenn mehr als ein Element den Binding-Wert hat, Status auf True, funktioniert es nicht (es funktioniert nur für ein solches Element). Bitte sagen Sie mir, ob ich in die richtige Richtung gehe. Erzählen Sie mir auch andere Möglichkeiten, dies zu erreichen.

    
sudarsanyes 07.10.2009, 16:02
quelle

4 Antworten

10

Das Problem liegt darin, dass Sie Image resources verwenden. Das Image in Ihren Ressourcen ist eine konkrete Instanz eines Steuerelements. Es kann immer nur an einem Ort sein. Also, wenn Sie mehr als ein Element in Ihrer Liste haben ...

Dies sollte für Sie funktionieren:

%Vor%

Beachten Sie, dass Sie die Leistung verbessern können, indem Sie für jede Bilddatei in Ihren Ressourcen ImageSource verwenden und dann in Image darauf verweisen. Dies bedeutet effektiv, dass jedes Bild nur einmal von der Festplatte geladen wird, anstatt 2 * N-mal (wobei N die Anzahl der Elemente in Ihrer Liste ist).

    
Drew Noakes 07.10.2009, 16:09
quelle
5

Diese Antwort wird dir helfen. Dort habe ich einen ToggleButton genommen und ihn als ToggleButton in einem TreeView gestaltet (der + / - Teil zum Erweitern von Collapse Nodes). Sie müssen nur die Pfade ändern, die die Zeichen - und + zeichnen, um stattdessen Ihre Bilder anzuzeigen.

Hier geht es personalisiert zu Ihnen, legen Sie einfach ein Bild namens "on.jpg" und ein anderes namens "off.jpg" unter Ihrem C: \ Verzeichnis, und es sollte nur durch Kopieren / Einfügen in Ihr Fenster funktionieren:

%Vor%     
Carlo 07.10.2009 16:17
quelle
3

Hier ist ein ToggleButton mit 3 Bildern und einem Popup:

  1. Ein Bild für wenn IsChecked = false.
  2. Ein Bild, wenn IsChecked = true ist.
  3. Ein Bild für wann IsMouseOver = true.

Die Bilder werden als BitmapImage in Ressourcen gespeichert, um zu vermeiden, dass sich die Darstellung auf Triggern ändert.

Die Bilddateien müssen zu den Ressourcen hinzugefügt werden, und dann müssen die Dateien, die dem Ordner "Resoruces" im Projekt hinzugefügt wurden, als BuildAction = Ressource markiert werden.

Wenn das ToggleButton IsEnabled = false ist, wird auch eine Opazität auf das Image-Steuerelement angewendet.

Code:

%Vor%     
JoanComasFdz 22.03.2012 11:48
quelle
1

Wie Drew Noakes sagte, gab es in meinem Snippte nur zwei Bilder. Also funktionierten nur zwei Dinge richtig. Ich habe dieses Problem mit dem folgenden Snippet gelöst.

%Vor%

Einfach, ich habe die Trigger in die Datenvorlage verschoben. Weiß nicht, ob das die richtige Antwort ist. Scheint zu arbeiten

    
sudarsanyes 07.10.2009 17:21
quelle

Tags und Links