PresentationFramework.Aero2 中提供了哪些主题?

Which themes are available in PresentationFramework.Aero2?

我的 WPF 应用程序太亮了,我想给它应用一个深色主题。

在我的计算机上,Explorer 使用的是深色主题。我可以在我的 WPF 应用程序上使用与资源管理器相同的主题吗?如果是这样,我该怎么做?

我看到示例说我可以将其添加到我的 App.xaml:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

这很有效,我的主题现已更改。 但是其他可用的主题是什么?他们长什么样?

而且我想既然“Aero2”是一回事,这可能看起来更现代。我尝试将 Source 属性 更改为 /PresentationFramework.Aero2;component/themes/Aero.NormalColor.xaml (注意“2”)但它引发了错误:

IOException: Cannot locate resource 'themes/aero.normalcolor.xaml'.

切换 WPF Built-In 主题

对于 .NET Core 3.1,您必须将主题词典合并到应用程序资源中。

<Application x:Class="YourApp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WPFThemes"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
         <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
               <ResourceDictionary Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml"/>
            </ResourceDictionary.MergedDictionaries>
         </ResourceDictionary>
    </Application.Resources>
</Application>

对于.NET Framework,您也必须合并主题资源字典,但您还必须在您的项目中引用相应的主题程序集。在您的项目中,右键单击 References、select Add Reference... 并展开 Assemblies 树项目。搜索 PresentationFramework,然后选中要引用的主题程序集的复选框并单击 确定

Built-In 主题

  • AeroLite - Windows 8 到 10 个相似的主题

    /PresentationFramework.AeroLite;component/themes/AeroLite.NormalColor.xaml
    
  • Aero2 - Windows 8 到 10 个相似主题

    /PresentationFramework.Aero2;component/themes/Aero2.NormalColor.xaml
    
  • Aero - Windows 7 主题

    /PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml
    
  • Luna - Windows XP 主题

    • 绿色变种
      /PresentationFramework.Luna;component/themes/Luna.NormalColor.xaml
      
    • 银色版本
      /PresentationFramework.Luna;component/themes/Luna.Metallic.xaml
      
    • 橄榄色变种
      /PresentationFramework.Luna;component/themes/Luna.Homestead.xaml
      
  • Royale - Windows XP Media Center 主题

    /PresentationFramework.Royale;component/themes/Royale.NormalColor.xaml
    
  • 经典 - Windows 95/98/2000 相似主题

    /PresentationFramework.Classic;component/themes/Classic.xaml
    

其他主题

On my computer, Explorer is using a dark theme. Can I use the same theme as Explorer on my WPF application? And if so, how do I do that?

不,你不能。亮暗模式没有 built-in 主题。如果您没有指定或覆盖此行为,则将在当前操作系统下为您的应用程序选择最合适的主题。对我来说 Windows 10 即 Aero2.

如果你想要一个更现代的主题,支持浅色和深色模式,你必须看看像 MahApps.Metro or MaterialDesignInXAML 这样的第三方库。这些还提供了基于操作系统浅色或深色设置的自动主题切换。