1

我真的需要你在这方面的帮助。

我正在开发一个 WPF 应用程序。在我的开发机器中,我使用的是带有 Aero 主题的 Windows 7。

我已将应用程序交付给使用 Server 2008 的同事,但没有 Aero 主题。

好吧,应用程序的外观和下降发生了巨大变化。

主要问题是我不理解某些行为的原因。让我们选择一个应该简单并且足以让我理解真正问题的:扩展器!

我在 UserControl 中使用了很多扩展器,并且我已经声明扩展器样式具有:

<Style TargetType="Expander">
    <Setter Property="Background" Value="#FF9B9B9B" />
    <Setter Property="Padding" Value="0" />
</Style>

这在我的机器上看起来很棒(带有 Aero 的 Windows 7)。在我的同事机器中,背景值受到尊重,但切换按钮具有灰色背景边框(看起来像 SystemColors.ControlBrushKey)。

在启用 Aero 的情况下,这是我想要的方式: 在此处输入图像描述

这就是我在经典主题中得到的: 在此处输入图像描述

我在这里做错了什么?我该怎么做才能使我的应用程序在 Aero 和 Classic 中看起来不错?

如果我将 Aero XAML 文件与我的应用程序一起提供,它是否可以在 XP 机器上运行?

谢谢

4

3 回答 3

3

看看这篇博文。看来作者可能已经解决了这个问题。

于 2012-06-27T17:34:12.463 回答
2

看来我找到了问题所在。我不太明白为什么会这样,但是......

问题在于样式定义。它必须是这样的:

<Style TargetType="{x:Type Expander}" BasedOn="{StaticResource {x:Type Expander}}">

因此,我必须分析我定义的所有样式并添加“BasedOn”属性。

谢谢你们。

于 2012-06-28T07:40:52.633 回答
0

您可以通过添加命名空间来强制窗口的航空主题

xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"

这将适用于 XP 机器,因为它内置于 WPF 随附的程序集中。

于 2012-06-27T16:53:43.420 回答