Wie ändere ich die Textfarbe einer Schaltfläche für die verschiedenen Staaten in Expression Blend?
Ich bin immer noch lernen, Mischung, also bitte Geduld mit mir. Ich habe eine Umschaltfläche in ein WPF-Projekt und ich brauche zum ändern der Textfarbe für verschiedene Zustände wie mouseover und überprüft. Allerdings, wenn ich bin Bearbeiten Sie die Vorlage, und ich wählen Sie den contentPresenter, der nur Pinsel ist OpacityMask und es ist nicht betroffen Pinsel Farbe ändert.
Kann ich natürlich den text ändern Farbe durch Bearbeiten der style, aber dies ist nicht sinnvoll, da es in den Staaten bin ich interessant in der Bearbeitung.
Im Grunde genommen, ich möchte einfach den text des Buttons ändern bei mouseover, hover, etc, dies scheint eine vernünftige Sache zu tun, aber die OpacityMask Pinsel der ContentPresenter können nicht bearbeitet werden.
Jemand erwähnte änderung der ContentPresenter in einem ContentControl. Dies funktioniert, aber ich jetzt nicht den text Bearbeiten, für die Sie eine Instanz der Schaltfläche. Muss ich link das ContentControl etwas?
Vielen Dank für jede Hilfe. Ich bin stecken geblieben hier für ein paar Stunden und ich habe die Suche überall nach der Antwort, ohne Erfolg
Hallo Viktor, vielen Dank für deine Antwort, jedoch möchte ich vermeiden Trigger, wenn überhaupt möglich, wie ich war auf der Suche nach etwas flexibler (d.h. legen Sie es und vergessen Sie es) ich mache sehr viel mit den text-Eigenschaften und würde nicht wollen, um die Einstellung Trigger jedes mal. Viv ' s Antwort war die, die ich gefolgt, die update-Teil obwohl, als, dass mir erlaubt, die Arbeit mit text, als ob es war einfach eine normale textbox. vielen Dank für Eure Hilfe obwohl
InformationsquelleAutor John Rooney | 2013-07-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie tun, was Sie suchen, ohne eine
ContentControl
und nur unter Verwendung derVisualStateManager
Also zum Beispiel sagen, der Staat für die Anwendung eines neuen
Foreground
Farbe, um den text IhrerButton
istMouseOver
,Brush
Ressource fürButton.MouseOver.Foreground
beim Bearbeiten einerButton
Vorlage.also lassen Sie uns eines erstellen. (Fügen Sie einfach die folgenden Zeile zusammen mit der anderen Bürste Ressourcen)
Storyboard
zu denTextElement.Foreground
descontentPresenter
.damit Ihre VSM Aussehen wird:
und das ist es.
Tun, beachten Sie, was wir hier tun, wäre in Ordnung nur, wenn die
Content
desButton
ist nur text, aber da es ist, was Ihre Nutzung ist, wie in Ihrer Frage erwähnt, Sie sollten in Ordnung sein.Sidenote:
Können Sie genau die gleiche Sache nur durch Umschalten der
ContentPresenter
zu einemTextBlock
imControlTemplate
.Wenn Sie die
Foreground
erhältlich sein, die alleContent
desButton
, dann yeh schalten Sie einfach dieContentPresenter
zu einemContentControl
und Sie können immer noch Ihre VSM Storyboard ist in einer sehr ähnlichen Weise.Update:
Wechseln die
ContentPresenter
zu einemContentControl
, in IhremControlTemplate
schalten Sie das eigentliche element, mit dem neuen.:
würden Sie haben, um Ihre Eigenschaften zu aktualisieren, entsprechend wie zB
ContentControl
nicht unterstützenRecognizesAccessKeys
und es muss auchContent="{TemplateBinding Content}"
auf es, um tatsächlich zeigen die Inhalte. Mit einemContentPresenter
dieContent
Eigenschaft wird implizit gesetzt.check mein update an der Unterseite der post. Auch, suchen Sie einfach für andere Beispiele von kundenspezifischen
Button.Style
's und finden Sie einige gute Beispiele über diese. Wenn ich jedes bit, die ich mir vorstellen kann, Wir werden hier seit Stunden. gehen Sie mit google-Suchbegriffe wiewpf button ContentPresenter vs ContentControl
,wpf button Apply dynamic color to child controls
,wpf why use templateBinding
und Sie sollten einen ton darüber zu Lesen 🙂vielen vielen Dank viv, ich folgte Ihrem letzten update, musste ich mehr tun können, um den text so, es war eine bessere option, um nur offener swap, die Sie für ein contentcontrol. danke, du hast mich gerettet eine Menge Kopfschmerzen, ich konnte nicht finden, dass die Lösung irgendwo
viv, würden Sie mir helfen, mich auf meine neue Frage re: erstellen einer benutzerdefinierten Titelleiste? Dank
Viv, ich komme auf ziemlich viele Probleme und möchte auch lernen, eine Menge mehr über Blend und WPF im Allgemeinen. Wären Sie bereit zu tun, ein halber Tag / voller Tag bezahlte Beratung mit mir?
InformationsquelleAutor Viv
Foreground-Eigenschaft vorhanden ist, in Stil. So können Sie den Stil Bearbeiten und dort kannst du einstellen
Foreground
. Es könnte so etwas wie diesesOder wenn Sie es ändern wollen, in
ControlTemplate
dann kannst du es so machen.So, in expression blend werden Sie es so machen
InformationsquelleAutor Kapitán Mlíko