2012-04-04 155 views
0

有沒有辦法在WPF應用程序中創建一個將覆蓋所有窗口的窗口類型風格的樣式?WPF的默認窗口樣式覆蓋

ie;

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

in App.xaml或App.xaml中引用的資源字典。

+0

我放棄了這一個。看到這篇文章的更多信息http://stackoverflow.com/questions/431940/how-to-set-default-wpf-window-style-in-app-xaml/460750#460750。讓我知道你是否設法解決它。 – Phil 2012-04-04 17:01:33

回答

1

簡短的回答是:這是不可能的。

說明 有很多類似的問題: WPF Window Style not working at runtime
WPF window style not being applied
How to set default WPF Window Style in app.xaml?

中的TargetType風格不管理派生類型。

您不是創建Window類,而是從它派生的類。如果您創建了Window類的實例,則應該應用該樣式。

Dim frm As New Window 
frm.Show() 

但是,它不起作用(至少在4.0),我的Application.xaml樣式不運行在運行時。解決方法是:

負荷運行時的資源詞典:

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

在運行時

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 

創建風格和窗口所需的背景。我認爲這是一個錯誤。