我在windows 10设备和windows 7设备之间有恼人的外观差异。
我在我的WindowStyle="None"元素中直接使用DockPanelWindow
我不明白为什么还有边界?为什么按钮、文本框、组合框等的边框是圆形的?
看来这和航空有关。有没有办法阻止我的应用程序使用Aero?我假设有另一个与windows 10相关的演示框架,但是不知道它是什么来强制它。
aBorderBrush是解决这个问题的最简单方法吗?

<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显示:
wpf - WPF:Windows 7 vs Windows 10外观-LMLPHP
一切仍然正常工作,但一些文本框和按钮的设置方式,部分字母丢失。

最佳答案

我认为当很多人真正开始定制应用程序的风格时,他们会偶然发现这两个问题。这两个问题都有一些公认的快捷方式,例如对wpf使用现有的样式/库:
我看到了一些常见的窗口和样式库:
MahApps.Metro是一个很好的库,我已经用了很长时间来获得干净的窗口和界面(尤其是一些客户喜欢的“黑暗”主题)。
Modern UI个人经验很少,但它的相似之处在于它有更现代的窗户设计,以及一个大的风格设置。我见过它经常使用。
Elysium再说一次,经验不多,但似乎很活跃。我没见过它像其他两个那样用。
当然,这些主题还包括很多其他的地铁主题。还有其他可用的主题包,我发现如果一个客户想要一个现代的设计(也可以识别,来自谷歌)的Material Design In XAML Toolkit很好。
看起来你的风格是从头开始的,但是上面的内容可能对你来说还是很有用的。如果你想自己去做,会有一个冗长的讨论,有很多答案here
对于弯角,如注释中所述,这是wpf在不同操作系统上的默认行为的结果。它尝试选择一种默认样式,以便与当前操作系统最佳地融合。对于大多数只使用默认主题的应用程序,这通常无关紧要。
不过,当您自己设计所有内容时,它确实会破坏您手动配置的内容,因为一些与您设置的主题配合良好的属性可能会有所不同,比如圆角。
有两种选择。
显式设置所有属性,使其看起来完全符合您的要求。这样做意味着,即使“基础”主题发生变化,它仍然会看起来很好。这就是上面这些库的工作原理-它们完全定义了一个样式。问题是你必须在不同的主题上手动测试它,这是一点工作。
手动设置基本主题。(也可用于选项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>

出于某种原因,除非用引号括起来,否则上面的代码不会显示为代码…

08-26 14:47
查看更多