WPF默认窗口样式替代



是否有方法在WPF应用程序中创建一个样式,该样式将覆盖所有窗口的Window类型的样式?

即;

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

在App.xaml中或App.xaml.中引用的资源字典

简短的回答是:这是不可能的。

解释有很多类似的问题:WPF窗口样式在运行时不起作用
未应用WPF窗口样式
如何在app.xaml中设置默认的WPF窗口样式

样式中的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

并且该窗口具有所需的背景。我认为这是一个bug。

相关内容

  • 没有找到相关文章

最新更新