2012-04-04 6 views
0

Есть ли способ создать стиль в приложении WPF, который переопределит стиль типа Window для всех окон?переопределение стиля окна по умолчанию WPF

ie;

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

в App.xaml или словарь ресурсов, на который ссылается в App.xaml.

+0

Я отказываюсь от этого. См. Это сообщение для получения дополнительной информации http://stackoverflow.com/questions/431940/how-to-set-default-wpf-window-style-in-app-xaml/460750#460750. Дайте мне знать, если вам удастся это решить. – Phil

ответ

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 

И окно возжелал фон. Я думаю, что это ошибка.

Смежные вопросы