So definieren Sie alle Textblockelemente in der gleichen Farbe

8

Wir verwenden globale Stildefinitionen für die meisten Typen. Wir definieren dann in der app.xaml Datei. Bei der Verwendung von TextBlock ist es ein Problem, eine Vordergrundfarbe zu definieren, da alle Steuerelemente mit TextBlock (z. B. die Inhaltsfarbe der Schaltfläche) geändert werden. Wie können wir einen globalen Stil definieren, der nur auf bestimmte TextBlock-Verwendungen wirkt?

aktuelle problematische Verwendung:

%Vor%     
ie1 24.10.2011, 13:11
quelle

3 Antworten

2

Da ich nicht glaube, dass es eine Möglichkeit gibt, "Ihre" TextBlock s und diejenigen, die Teil anderer Steuerelemente sind, zu unterscheiden, sind Ihre Möglichkeiten ziemlich begrenzt.

  • Sie könnten named Style erstellen und Style="{StaticResource coloredTextBlock}" oder Foreground="{StaticResource textBlockColor}" allen TextBlock s hinzufügen. Das wäre ziemlich langweilig und nicht trocken.
  • Sie könnten Ihren eigenen Typ erstellen, der von TextBlock erbt und diesen formatiert. Dies hat einige der Nachteile der obigen Lösung (Sie müssen daran denken). Aber es hat viel weniger Wiederholungen.
svick 24.10.2011 13:23
quelle
2

Dies liegt daran, dass ContentPresenter einen TextBlock für einen String-Inhalt erstellt und da dieser TextBlock nicht in der visuellen Struktur ist, sucht er nach der Ressource auf Anwendungsebene. Und wenn Sie auf Anwendungsebene einen Stil für TextBlock definieren, wird dieser auf diesen TextBlock in ControlControls angewendet.

Eine Problemumgehung besteht darin, ein DataTemplate für System.String zu definieren, wobei wir explizit einen Standard-TextBlock verwenden können, um den Inhalt anzuzeigen. Sie können das DataTemplate im selben Wörterbuch wie den TextBlock-Stil platzieren, so dass dieses DataTemplate auf den von Ihrem Stil beeinflussten ContentPresenter angewendet wird.

Fügen Sie dies Ihren Anwendungsressourcen hinzu und es sollte für Sie funktionieren -

%Vor%

Deklarieren Sie einen Namespace in Ihrem XAML, falls nicht bereits verwiesen -

%Vor%

BEARBEITEN: Überprüfen Sie dieses Beispiel, wo es funktioniert ..

%Vor%     
Rohit Vats 24.10.2011 17:59
quelle
1

Geben Sie einfach einen x: Schlüssel im Stil ein, wie:

%Vor%

und erwähnen Sie den Schlüssel im TextBlock-Steuerelementstil, wo immer Sie diesen bestimmten TextBlock-Stil benötigen, wie:

%Vor%     
Debasis 24.10.2011 13:26
quelle

Tags und Links