【问题标题】:WPF: Windows 7 vs Windows 10 AppearanceWPF:Windows 7 与 Windows 10 外观
【发布时间】:2016-12-14 08:01:27
【问题描述】:

我在 Windows 10 设备和 Windows 7 设备之间存在令人讨厌的外观差异。

我在Window 元素中直接使用WindowStyle="None"DockPanel

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

这似乎与 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>

Windows 7 显示:

Windows 10 显示:

一切仍然正常,但一些文本框和按钮的设置方式,部分字母丢失。

【问题讨论】:

  • 我会看看这个,很多关于无边框窗口的信息:stackoverflow.com/questions/611298/…
  • 关于弯曲的边缘,我猜这是因为它根据操作系统选择不同的主题。您是否正在为这些组件定义样式?
  • 我一直使用 Mahapps.Metro,经过大量修改,以获得漂亮的窗口和应用程序之间的一致样式。或者最近的 WPF Material Design。
  • @Joe,所以没有定义边框样式CornerRadius 意味着从主题继承?我认为默认情况下它会是 WYSIWYG。
  • 是的。问题是它在不同的系统上选择不同的主题,这意味着你永远不知道你需要设置什么——我同意这并不理想。看起来你可以手动设置主题,那么它应该是一致的吗?看看这些:arbel.net/2006/11/03/…, wpftutorial.net/themes.html

标签: wpf windows xaml


【解决方案1】:

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

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

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

当然,这些包括许多其他 Metro 主题。还有其他可用的主题包,我发现 Material Design In XAML Toolkit 非常适合客户想要现代设计(也可以识别,来自 Google)。

看起来您正在从头开始制作您的样式,但以上内容可能对您仅用于 windows 仍然有用。如果您想自己动手,可以进行冗长的讨论,并提供很多答案here

对于弯角,如 cmets 中所述,这是 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>

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

【讨论】:

    猜你喜欢
    • 2016-01-22
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 2011-05-07
    • 2011-02-14
    • 2017-12-08
    相关资源
    最近更新 更多