我正在尝试从Windows Presentation Foundation (WPF) CodePlex项目中应用ExpressionDark主题。
我已将文件ExpressionDark.xaml
添加到Themes
子文件夹中,并更改了我的App.xaml
文件以引用此文件:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary
Source="Themes/ExpressionDark.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
当我运行程序时,样式将应用于所有控件,但不应用于窗口本身。窗口的背景保持白色。我理解的是,样式适用于Window
类,但不适用于派生类。
要解决此问题,我尝试在app.xaml
文件中创建一个新样式,以便继承自定义窗口类的Windows样式:
<Application.Resources>
<ResourceDictionary>
<Style
TargetType="{x:Type local:MainWindow}"
BasedOn="{StaticResource {x:Type Window}}" />
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary
Source="Themes/ExpressionDark.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
结果完全相同。
我也尝试了WPF: Adventures in Theming (Part 2)的建议。我添加到我的窗口定义:
<Window
x:Class="MyProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:MyProject.ViewModel"
Title="MainWindow"
Height="350"
Width="525"
Style="{DynamicResource {x:Type Window}}" />
没有更多的成功。
缺少什么?
PS:不知道是否重要,但我的窗口的孩子是网格。
答案 0 :(得分:3)
使用Window XAML中的动态资源指定背景
<Window x:Class="HellowWorld.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Hellow World" Height="614" Width="821"
Background="{DynamicResource WindowBackgroundBrush}">
答案 1 :(得分:2)
我最后一次检查主题中没有Window
样式。