Wenden Sie den Standard-WPF-Stil an

8

Ich habe einen globalen Stil, der alle meine TextBox -Stile festlegt, aber in einigen Fällen möchte ich nur die Vordergrundfarbe auf die ursprüngliche nicht benutzerdefinierte Farbe zurücksetzen. Ich habe versucht, {TemplateBinding Foreground} innerhalb der spezifischen TextBoxes zu verwenden, die ich zurücksetzen wollte. Es endete nicht, XAML gültig zu sein, und ich bin nicht sicher, dass das irgendwie der richtige Weg ist.

Irgendwelche Ideen? Danke.

    
xanadont 03.06.2009, 16:14
quelle

1 Antwort

11

Es gibt ein paar Möglichkeiten, wie das gemacht werden könnte. Wenn Sie sich die Vorrangliste auf der MSDN ansehen dann können Sie sehen, dass der Forground-Satz in den Weisen 1-8 den Foreground von einem Standardstil überschreibt. Der einfachste Weg ist, den lokalen Wert in TextBox zu setzen.

%Vor%

Sie können auch die Eigenschaft 'BasedOn' von Stilen verwenden, um die anderen Versionen zu überschreiben. Dazu muss Ihrem Standardstil ein Schlüsselwert zugewiesen werden, der dann aber auch wie in diesem Beispiel verwendet werden kann:

%Vor%


Bearbeiten:
Für den Fall, dass der Standardstil einen Wert anwendet und Sie ihn auf den Basiswert zurücksetzen möchten, gibt es ein paar Möglichkeiten, die ich mir vorstellen kann, um dieses Verhalten zu erhalten. Sie können nicht, dass ich weiß, auf den generellen Standard-Design-Wert zurückbinden.

Wir können jedoch einige andere Dinge tun. Wenn wir den Stil benötigen, um einige Eigenschaften nicht anzuwenden, können wir den Stil auf {x:Null} setzen und damit verhindern, dass der Standardstil angewendet wird. Oder wir können dem Element einen eigenen Stil geben, der nicht vom Basisstil erbt und dann nur die von uns benötigten Setter erneut anwendet:

%Vor%

Wir könnten den Standardstil so ändern, dass der Vordergrund nur unter bestimmten Bedingungen gesetzt wird, beispielsweise wenn der Tag ein bestimmter Wert ist.

%Vor%     
rmoore 03.06.2009, 16:35
quelle

Tags und Links