WPF默认窗口样式替代
是否有一种方法可以在WPF应用程序中创建一个样式,该样式将覆盖所有窗口的窗口类型样式 ieWPF默认窗口样式替代,wpf,styles,Wpf,Styles,是否有一种方法可以在WPF应用程序中创建一个样式,该样式将覆盖所有窗口的窗口类型样式 ie 在App.xaml中或App.xaml中引用的资源字典中。简短的回答是:这是不可能的 解释 有很多类似的问题: 样式中的TargetType不管理派生类型 您不是在创建窗口类,而是从中派生的类。如果创建了Window类的实例,则应应用该样式 Dim frm As New Window frm.Show() 但是,它不起作用(至少在4.0中是这样),my Application.xaml中的样式
在App.xaml中或App.xaml中引用的资源字典中。简短的回答是:这是不可能的 解释 有很多类似的问题:
样式中的TargetType不管理派生类型 您不是在创建窗口类,而是从中派生的类。如果创建了Window类的实例,则应应用该样式
Dim frm As New Window
frm.Show()
但是,它不起作用(至少在4.0中是这样),my 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。我放弃了这个。有关更多信息,请参阅本文。如果你能解决它,请告诉我。
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