【问题标题】:Issue with WPF Application.Resource being applied in Design Time but not in Runtime (no merged dictionary)WPF Application.Resource 在设计时应用但不在运行时应用的问题(没有合并的字典)
【发布时间】: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 我的应用程序样式应该在默认样式之前选择

【问题讨论】:

标签: c# wpf


【解决方案1】:

好的,通过阅读下面的帖子,brader24 的链接是正确的。这是一个派生类型问题,例如您无法在 Control 上设置 Foreground,您无法在 Window 上设置 Background,因为它不会传播到我的特定窗口

解决办法: https://stackoverflow.com/a/6902225/2416394

编辑:这对我来说已经解决了。我会尽快将其标记为已解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 2020-01-08
    • 2011-06-06
    相关资源
    最近更新 更多