So ändern Textfeld Platzhalter-text Farbe für ein bestimmtes element, nicht global

MSDN-Listen der styles und templates für die TextBox Klasse hier. Ich kann, außer diese Thema Ressourcen durch die Schaffung einer ResourceDictionary im App.xaml wie diese:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.ThemeDictionaries>
            <ResourceDictionary x:Key="Default">
                <SolidColorBrush x:Key="TextBoxPlaceholderTextThemeBrush" Color="Yellow"/>
            </ResourceDictionary>
        </ResourceDictionary.ThemeDictionaries>
    </ResourceDictionary>
</Application.Resources>

aber dies hat Einfluss auf alle TextBox in meiner app. Wie kann ich einstellen, dass dieses Thema nur für ein bestimmtes element?

Habe ich versucht, indem Sie dieses Wörterbuch in Page.Resources und sogar TextBox.Resources für die TextBox dass ich möchte, um es anzuwenden, aber es funktioniert nicht.

Ich wirklich nicht wollen, haben zu einer Neudefinition der Template nur um diese Eigenschaft zu ändern.


BEARBEITEN Heena, die Antwort ist nah, aber ich würde auch gerne unterschiedliche Farben für helle und dunkle themes, da mein Textfeld hat einen transparenten hintergrund.

Ich es geschafft, zu erreichen das, indem es Foreground="{ThemeResource TextBoxPlaceholderTextThemeBrush}" als Teil der Template (also, in anderen Worten, die Vorlage ist genau die Standard-als pro MSDN) und dann die Angabe in der Seite Ressourcen:

<Page.Resources>
    <ResourceDictionary.ThemeDictionaries>
        <ResourceDictionary x:Key="Light">
            <SolidColorBrush x:Key="TextBoxPlaceholderTextThemeBrush" Color="Blue"/>
        </ResourceDictionary>
        ...
    </ResourceDictionary.ThemeDictionaries>
</Page.Resources>

aber bedeutet das jetzt, ich habe zu einem riesigen ControlTemplate Stil-setter für die textbox in der Seite meine Ressourcen zu, die nur eine exakte Kopie von der default sowieso!

Hat das etwas damit zu tun, wie TextBoxPlaceholderTextThemeBrush behoben ist innerhalb der ControlTemplate? also der Grund, warum es erkennt meine custom-theme Wörterbuch ist, weil die ControlTemplate definiert wurde, in der gleichen Ressource Wörterbuch?

Wie soll dies gemacht werden? Sollte ich einfach eine Unterklasse der textbox, so dass alle, die XAML-Code kann in eine andere Datei verschoben (auch wenn es nur für eine textbox)?

Ich fühle deinen Schmerz ...

InformationsquelleAutor Decade Moon | 2014-06-26

Schreibe einen Kommentar