我正在尝试在不创建整个主题的情况下为我的应用程序创建一些自定义外观。我创建了一个WPF4.5应用程序,它有一个默认的Window和下面的App.xaml
<Application x:Class="WpfBGTest.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<Style TargetType="Window">
<Setter Property="Background" Value="Yellow" />
</Style>
</Application.Resources>
</Application>
和完全默认的窗口代码
<Window x:Class="WpfBGTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
</Grid>
</Window>
通过这样做,我看到在设计时,我的Window.xaml是黄色的。但是运行应用程序时,窗口会失去黄色并返回灰色(当前窗口主题?)
这里发生了什么?如何在不在每个控件上设置明确的StaticResource标记的情况下自定义我的应用程序?我的风格有一个目标类型,没有键。我不明白为什么设计时与运行时有这么大的不同。
关于合并词典的问题,我已经读够了,但上面的代码基本上是一个风格单一的WPF应用程序。
编辑:我已经使用Snoop来查看在决定提取什么背景时使用了DefaultStyle。但为什么呢?查看Dependency属性优先级列表:http://msdn.microsoft.com/en-us/library/ms743230.aspx我的应用程序样式应该在默认样式之前选择
好的,通过阅读brader24下面的帖子,链接是正确的。这是一个派生类型的问题,比如你不能在控制上设置前景,你不能在窗口上设置背景,因为它没有传播到我的特定窗口
解决方案帖子:https://stackoverflow.com/a/6902225/2416394
编辑:这对我来说已经解决了。我会尽快将其标记为已解决。