2012-04-04 1 views
0

Gibt es eine Möglichkeit, einen Stil in einer WPF-Anwendung zu erstellen, die den Stil des Fenstertyps für alle Fenster überschreiben?WPF-Standardfenster Stil überschreiben

dh;

<Style x:Key="{x:Type Window}" 
    TargetType="{x:Type Window}" > 
    <Setter Property="Background" Value="Black" /> 
</Style> 

in App.xaml oder ein Ressourcen-Wörterbuch in App.xaml verwiesen.

+0

Ich gebe diese auf. Siehe diesen Beitrag für weitere Informationen http://stackoverflow.com/questions/431940/how-to-set-default-wpf-window-style-in-app-xaml/460750#460750. Lassen Sie es mich wissen, wenn Sie es schaffen, es zu lösen. – Phil

Antwort

1

Kurze Antwort ist: es ist nicht möglich.

Erklärung Es gibt viele ähnliche Fragen: WPF Window Style not working at runtime
WPF window style not being applied
How to set default WPF Window Style in app.xaml?

Target in Styles nicht abgeleiteten Typen verwalten.

Sie erstellen nicht die Window-Klasse, sondern die davon abgeleitete Klasse. Wenn Sie eine Instanz der Window-Klasse erstellt haben, sollte der Style angewendet werden.

Dim frm As New Window 
frm.Show() 

Es ist jedoch nicht (zumindest in 4.0) funktioniert, die Arten von meinem Application.xaml werden zur Laufzeit nicht angewendet. Abhilfen sind:

laden ein Ressourcenverzeichnis zur Laufzeit:

Dim app As Application = New Application() 
Application.Current.Resources.MergedDictionaries.Add(Application.LoadComponent(New Uri("/MyProject;component/MainDictionary.xaml", UriKind.Relative))) 

den Stil zur Laufzeit erstellen

Sub Main() 
Dim app As Application = New Application() 
Dim sty As Style 
sty = New Style With {.TargetType = GetType(Window)} 
sty.Setters.Add(New Setter With {.Property = Control.BackgroundProperty, .Value = Brushes.Red}) 
Application.Current.Resources.Add(GetType(Window), sty) 
Dim frm As New Window 
frm.ShowDialog() 
End Sub 

und das Fenster hat Hintergrund gewünscht. Ich denke, das ist ein Fehler.

Verwandte Themen