PresentationFramework Aero、Aero2或AeroLite

12

我想编写一个快速的WPF应用程序,但是发现在Windows 7和Windows 10上看起来完全不同。所有的填充和边距都弄乱了。我决定添加默认的PresentationFramework.Aero Windows 7主题,希望这能解决问题。然而,似乎还有两个新选项:

  • PresentationFramework.Aero.dll

在.NET 4.5中,Microsoft引入了两个额外的程序集:

  • PresentationFramework.AeroLite.dll
  • PresentationFramework.Aero2.dll

为了实现在Windows 7、8和10上一致的外观和填充边距,我该使用哪一个程序集呢?

2个回答

1

我将一个旧的WPF基础项目升级到了.Net 6,并收到了关于不兼容Aero版本的警告。我只是删除了Aero引用,应用程序就能够在.Net 6中构建/运行,没有任何警告或问题。

错误信息

警告MSB3243:无法解决PresentationFramework.Aero之间的冲突...


当我偶然看到System.IO.Compression的引用时,我也做了同样的事情,这为我解决了问题。我猜这些程序集现在已经成为.Net Core的一部分,引用旧版本会导致错误。 - Tim

0

WPF 会根据操作系统版本选择默认主题。这使得应用程序在整个操作系统中具有一致的外观和感觉,而不是每个应用程序定义自己的外观和感觉,导致碎片化的体验。这也允许用户做出某些选择,并在其系统中反映出来。当然,这是完全可覆盖的;WPF 让您访问每个控件的模板和样式。

只需在应用程序启动事件中添加以下代码(以下代码显示如何使用 Aero 主题):

Uri uri = new Uri(“PresentationFramework.Aero;V3.0.0.0;31bf3856ad364e35;component\\themes/aero.normalcolor.xaml”, UriKind.Relative);
Resources.MergedDictionaries.Add(Application.LoadComponent(uri) as ResourceDictionary); 

选择自己的主题并与 App.xaml 中的 MergedDictionary 合并。这将在所有操作系统版本中创建独特的外观。


为什么会有踩票?这个回答很合理啊!我在InitializeComponent()之前复制了示例,结果改变了“样式”。也许更多关于如何构建Uri的解释会更好。 - minus one
请问您能否添加代码,以检查系统上可用的主题?这个链接可能会很有趣:link - minus one

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接