【发布时间】:2013-08-14 17:05:52
【问题描述】:
好吧,我正在尝试为我的应用程序创建一些自定义外观,而不创建整个主题。 我创建了一个带有默认窗口和以下 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 会失去黄色并变回灰色(当前的 windows 主题?)
这里发生了什么?如何在不将显式静态资源标记放在每个控件上的情况下自定义我的应用程序?我的样式有一个目标类型,没有键。我不明白为什么设计时间与运行时间相差这么大。
我已经阅读了足够多的关于合并字典的问题,但上面的代码基本上是一个具有一种样式的普通 WPF 应用程序。
编辑:我使用 Snoop 来查看 DefaultStyle 在决定将获取什么背景时使用。但为什么?查看 Dependecy 属性优先级列表:http://msdn.microsoft.com/en-us/library/ms743230.aspx 我的应用程序样式应该在默认样式之前选择
【问题讨论】: