我正在尝试为我的应用程序创建一些自定义外观,而不创建整个主题。 我使用默认窗口和以下App.xaml
创建了一个WPF 4.5应用程序<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是黄色的。 但是运行应用程序时Window会失去黄色并返回灰色(当前窗口主题?)
这里发生了什么?如何在不为每个控件添加显式StaticResource标记的情况下自定义我的应用程序?我的风格有一个目标类型,没有键。我不明白为什么设计时间与运行时间差别很大。
我已经阅读了有关合并词典的问题,但上面的代码基本上是一个带有一种风格的vanilla WPF应用程序。
编辑:我已经使用Snoop看到在决定要获取什么背景时使用DefaultStyle。但为什么?观察Dependecy属性优先级列表:http://msdn.microsoft.com/en-us/library/ms743230.aspx我的应用程序样式应该在默认样式之前选择
答案 0 :(得分:1)
好的,通过阅读下面的帖子,brader24的链接是正确的。这是一个派生类型问题,就像你不能在Control上设置Foreground,你不能在Window上设置Background,因为它没有传播到我的特定窗口
解决方案帖子: https://stackoverflow.com/a/6902225/2416394
编辑:这是我解决的问题。我会尽快将其标记为已解决。