Laden...

WPF Styles werden nicht übernommen (nur im Designer)

Erstellt von Timur Zanagar vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.840 Views
Timur Zanagar Themenstarter:in
1.457 Beiträge seit 2004
vor 13 Jahren
WPF Styles werden nicht übernommen (nur im Designer)

Hallo an alle,

Folgenden Code habe ich in der App.xaml und dieser wird nicht in der Anwendung übernommen. Wenn ich aber die Windows im Designer öffne, sehe ich das die Werte übernommen wurden.

Wie kann das sein das es im Designer funktioniert, aber nicht in der Anwendung?


<Style TargetType="{x:Type Window}">
            <Setter Property="FontSize" Value="20"></Setter>
            <Setter Property="TextOptions.TextFormattingMode" Value="Ideal"></Setter>
        </Style>

U
1.578 Beiträge seit 2009
vor 13 Jahren

"Window" Styles werden nicht automatisch übernommen, das der Designer es zeigt ist eher der Fehler.

Timur Zanagar Themenstarter:in
1.457 Beiträge seit 2004
vor 13 Jahren

Hallo CSL,

Vielen Dank für die Info. Wie kann ich das dann umsetzen? Ich würde gerne für die komplette Anwendung den FontSize ändern ohne das ich jedes Control usw. angeben muss. Hast du mir da einen Tipp?

U
1.578 Beiträge seit 2009
vor 13 Jahren

Ein Window style hast du ja, im Prinzip reicht es ja wenn du in jedem Window den Style explizit setzt.

Timur Zanagar Themenstarter:in
1.457 Beiträge seit 2004
vor 13 Jahren

Genau das wollte ich vermeiden. Dachte das man irgendwo global Styles anwenden kann.

U
1.578 Beiträge seit 2009
vor 13 Jahren

Versuch mal dieses

<Style TargetType="{x:Type FrameworkElement}">
    <Setter Property="TextBlock.FontSize" Value="20" />
</Style>

Aber ich glaube dann gilt das nur für die Controls die keinen eigenen Style haben, du müsstest dann bei allen Styles ein BasedOn definieren.

Ich glaub den Key in allen Window setzen ist die wenigste arbeit.

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

das Problem scheint zu sein dass bei der Angabe

<Style TargetType="{x:Type Window}">

der Stil für die Klasse "Window" gilt, aber nicht vererbt wird. Warum weiß ich nicht.

Neben dem Vorschlag von CSL könnte auch ein eigenes Basisfenster definiert werden und dort im Ctor den Stil zu setzen. Alle anderen Fenster erben von diesen.
Mir gefällt aber der Vorschlag von CSL dennoch besser und mMn auch weniger aufwändiger und fehleranfällig.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

Timur Zanagar Themenstarter:in
1.457 Beiträge seit 2004
vor 13 Jahren

Die beiden Ansätze bringen leider nichts. Ich kann keine Veränderung feststellen. Gehe ich Recht in der Annahme das ich nicht global eine Schriftgröße für alle Controls festlegen kann?

Dachte das im WPF mit Styles nun alles besser ist als bei Windows Forms?

6.911 Beiträge seit 2009
vor 13 Jahren

Hallo,

global eine Schriftgröße für alle Controls festlegen kann?

Ich habs nicht probiert (und kanns gerade nicht probieren), aber was ist wenn für TextElement die FontSize gesetzt wird?

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

M
1 Beiträge seit 2010
vor 13 Jahren

das Problem scheint zu sein dass bei der Angabe

<Style TargetType="{x:Type Window}">  

der Stil für die Klasse "Window" gilt, aber nicht vererbt wird. Warum weiß ich nicht.

Hallo,

die Vererbung in Styles funktioniert nicht ohne weiteres, da durch die "TargetType" Eigenschaft implizit der "x:Key" auf "Window" gesetzt wird. Die Steuerelemente suchen beim Initialisieren automatisch nach einem Standardstyle mit ihrem Typename z.B. "MyWindow". Das "Window".Equals("MyWindow") false ergibt sollte klar sein.

Um das Problem zu beheben kann man z.B. für jedes Window ein eigenes Style definieren mit "BasedOn" oder eben das Standardstyle direkt zuweisen.

Da wir in unserer Anwendung sowieso alle verwendeten Controls umstylen mussten, haben wir die Standardschriftgröße, Farbverläufe etc. einfach in ein Xaml-RessourceDictionary ausgelagert und in allen Styles/Templates darauf verwiesen.

mfg marste

Timur Zanagar Themenstarter:in
1.457 Beiträge seit 2004
vor 13 Jahren

Hallo marste,

Vielen Dank für deine Info. Das funktioniert das ganze auch gut, nur muss ich hier darauf achten das ich alle Controls entsprechend beachten. Schade das es kein globale Änderung für FontSize gibt 😦