WPF:Windows 7 vs Windows 10外观

时间:2016-08-08 13:50:49

标签: wpf windows 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>

Windows 7显示: Windows 7 Display

Windows 10显示:

Windows 10 Display

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

1 个答案:

答案 0 :(得分:4)

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

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

  • MahApps.Metro是一个很棒的图书馆,我已经使用了很长时间来获得干净的窗户和界面(尤其是一些客户喜欢的黑暗&#39;主题)。
  • Modern UI。个人经验不多,但它的相似之处在于它拥有更多现代化的窗户设计,以及大型风格。我经常看到它经常使用。
  • Elysium。再次,没有太多的经验,但似乎很活跃。我没见过它和其他两个一样多。

这些当然包括很多其他Metro主题。还有其他主题包可用,如果客户想要的是现代设计(也可以识别,来自谷歌),我发现Material Design In XAML Toolkit很棒。

看起来你正在从头开始制作自己的风格,但上述内容可能对您只是用于窗口有用。如果你想自己去做,那么就需要与很多答案here进行冗长的讨论。

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

当你自己设计一切时,它确实会对你手动配置的东西造成严重破坏,因为一些与你设置的主题配合得很好的属性可能会有所不同 - 比如圆角。

有两种选择。

  1. 明确设置所有属性,因此它看起来完全符合您的要求。这样做意味着,即使基地&#39;主题变化,它仍然会很好看。这就是上面那些库做事的方式 - 它们完全定义了一种风格。问题是你必须手动测试不同的主题并且它有点工作。
  2. 手动设置基本主题。 (也可用于选项1中的测试!)您可以覆盖应用程序使用的主题,而不是让它使用操作系统的默认设置,就像应用其他自定义主题一样,或者可能是您自己的主题:
  3. <App.Resources>
      <ResourceDictionary Source="/PresentationFramework.Aero, Version=3.0.0.0,
          Culture=neutral, PublicKeyToken=31bf3856ad364e35,
          ProcessorArchitecture=MSIL;component/themes/aero.normalcolor.xaml"/>
    </App.Resources>
    

    出于某种原因,除非包含在引号中,否则上述内容不会显示为代码...