WPF:Windows 7 与 Windows 10 外观对比

Gib*_*Top 1 windows wpf xaml

我在 Windows 10 设备和 Windows 7 设备之间有恼人的外观差异。

我正在我的元素中直接使用WindowStyle="None"和。DockPanelWindow

我不明白的是为什么还有边界?为什么按钮、文本框、组合框等的边框是圆形的?

这似乎与Aero有关。有什么方法可以阻止我的应用程序使用 Aero?我假设还有另一个与 Windows 10 相关的演示框架,但不知道强制它叫什么。

将一个BorderBrush是解决最简单的方法?

<Window x:Class="CBD.Presentation.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:CBD.Presentation"
        Title="CBD" Height="760" Width="944" WindowStartupLocation="CenterScreen"
        WindowStyle="None" SizeChanged="Window_SizeChanged" MinWidth="944" MinHeight="760"
        Icon="favicon.ico">
    <DockPanel x:Name="Root_Window" Background="Black">
        <!--Application stuff here -->
    </DockPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

Windows 7 显示: 视窗 7 显示

Windows 10 显示:

Windows 10 显示

一切仍然正常运行,但某些文本框和按钮的设置方式,缺少部分字母。

Joe*_*Joe 5

我认为当他们真正开始自定义应用程序的样式时,很多人都会偶然发现这两种情况。这两个问题都有一些完善的快捷方式,例如使用现有的 WPF 样式/库:

我看到了一些常见的 Window 和样式库:

  • MahApps.Metro是一个很棒的库,我用了很长时间来获得干净的窗口和界面(尤其是一些客户喜欢的“深色”主题)。
  • 现代用户界面。一点个人经验,但它的相似之处在于它有更现代的窗户设计,以及一个大的风格集。我见过它经常使用。
  • 极乐世界。同样,经验不多,但似乎很活跃。我没有看到它像其他两个那样使用。

当然,这些包括许多其他地铁主题。还有其他可用的主题包,如果客户想要现代设计(也可以识别,来自谷歌),我发现XAML 工具包中材料设计很棒。

看起来你是从头开始制作你的风格,但上面的内容可能仍然对你简单地用于窗口有用。如果你想要去它自己有很多用的答案了长时间的讨论在这里

对于弯角,如评论中所述,这是 WPF 在不同操作系统上的默认行为的结果。它尝试选择默认样式以与当前操作系统最佳融合。对于大多数仅使用默认主题的应用程序,这通常无关紧要。

但是,当您自己设置所有样式时,它确实会对您手动配置的内容造成严重破坏,因为某些与您设置的主题配合良好的属性可能会有所不同 - 例如圆角。

有两个选择。

  1. 显式设置所有属性,使其看起来完全符合您的要求。这样做意味着即使“基本”主题发生变化,它仍然看起来不错。这就是上面那些库的工作方式——它们完全定义了一种风格。问题是你必须手动在不同的主题上测试它,这需要一些工作。
  2. 手动设置基本主题。(也可用于选项 1 中的测试!)您可以手动覆盖您的应用程序使用的主题,而不是让它使用操作系统的默认主题,就像您应用其他自定义主题或您自己的主题一样:
<App.Resources>
  <ResourceDictionary Source="/PresentationFramework.Aero, Version=3.0.0.0,
      Culture=neutral, PublicKeyToken=31bf3856ad364e35,
      ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml"/>
</App.Resources>
Run Code Online (Sandbox Code Playgroud)

出于某种原因,除非用引号括起来,否则上述内容不会显示为代码......