WPF窗口样式在运行时不起作用

时间:2010-04-15 01:41:08

标签: wpf visual-studio-2010 styles

我在Visual Studio 2010 Express(C#)中创建了一个WPF应用程序,并将下面的文本添加到App.xaml中的Application.Resources。我在设计器中看到应用于窗口的样式,但是当我运行应用程序时,窗口背景为白色。

如果这是一个因素,则在MacBook Pro上的BootCamp上运行Windows XP。

提前致谢,

基督教

    <Style TargetType="{x:Type Window}">
        <Setter Property="Background">
            <Setter.Value>
                <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                    <GradientStop Offset="0" Color="WhiteSmoke" />
                    <GradientStop Offset="1" Color="Silver" />
                </LinearGradientBrush>
            </Setter.Value>
        </Setter>

        <Setter Property="Padding" Value="20" />
    </Style>

3 个答案:

答案 0 :(得分:11)

Microsoft已经复制了该问题,看起来它可能是WPF 4.0中的一个错误。

https://connect.microsoft.com/VisualStudio/feedback/details/555322/global-wpf-styles-are-not-shown-when-using-2-levels-of-references

在提交错误的人完成研究之后,我将所有包含在合并资源字典中的单个XAML资源文件剪切并粘贴到单个UberStyles.xaml文件中。我避免使用MergedDictionaries。

这解决了问题,我的WPF 3.5应用程序的样式信息又回到了我的WPF 4.0应用程序。

在我看来,这是WPF 4.0中一个明显的错误 - 我不确定你是如何将它作为一个功能转换而且行为没有记录。我有点担心这对整个WPF 4.0平台的影响。您可能会认为这将在Visual Studio 2010 Release的测试中被捕获!

无论如何,希望这会有所帮助。自从我们两周前升级到VS2010以来,我一直被这个bug吓到了。

答案 1 :(得分:0)

偶然发现以下内容:

How to set default WPF Window Style in app.xaml?

答案是样式不会应用于派生类型。

答案 2 :(得分:0)

我有同样的问题。我们为每个标准控件开发了一个带有自定义样式的库,它在.net 3.5下在deigner和运行时都可以正常工作。 今天我们决定将我们的项目转换为.net4(wpf 4有许多新的美味功能)。之后在运行时,所有这样的样式都不能在运行时工作,而是应用于designer:

 <Style TargetType={x:Type Button}>
      <Setter Property="FontSize" Value="14"/>
 </Style>

设置x的样式:键工作正常。但是我们需要为主题设置默认样式,而不是为每个控件设置它。