c# - 使用 VS Styles 的 Mahapps 抛出 IOException
问题描述
我在我的 WPF 应用程序中使用 Mahapps Tabcontrol。当我使用默认样式时效果很好,如果我尝试在 App.xaml 中使用 VS 样式:
<Application x:Class="UI.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:system="clr-namespace:System;assembly=mscorlib"
xmlns:vm="clr-namespace:UI.ViewModel"
xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:local="clr-namespace:UI"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! -->
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
<!-- Accent and AppTheme setting -->
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Teal.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/VS/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/VS/Colors.xaml" />
<!-- Icons -->
<ResourceDictionary x:Name="IconsDictionary" Source="Resources/Dictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
<system:Double x:Key="WindowTitleFontSize">16</system:Double>
<FontFamily x:Key="HeaderFontFamily">Segoe UI</FontFamily>
<vm:ViewModelLocator x:Key="MainLocator"/>
</ResourceDictionary>
</Application.Resources>
...它抛出一个错误:IOException: Cannot locate resource 'styles/vs/controls.xaml'。
如果我从 App.xaml 中删除 VS/Styles 引用,则应用程序会编译。
解决方案
找到了解决办法!
首先,从 App.xaml 中删除 VS/Styles:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! -->
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
<!-- Accent and AppTheme setting -->
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Teal.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml" />
<!-- Icons -->
<ResourceDictionary x:Name="IconsDictionary" Source="Resources/Dictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
其次,将其移至 Window.Resources 下的 MainWindow.xaml:
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/VS/Colors.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/VS/Styles.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
推荐阅读
- sql - SQL 层次结构循环/递归查询/自联接
- powershell - 将数据附加到带有数据的现有 csv 文件
- azure - Azure Devops 服务 - CI/CD
- sql - 为日期分配排名
- javascript - 有什么方法可以找到用户何时加入不和谐服务器?我的机器人返回未定义
- c++ - 计算链表的给定总和的所有子集
- android - 为android编译cmake项目时找不到JPEG
- html - 在您的网站中包含 svg 的最佳方式是什么(速度方面)
- javascript - 显示从 express 传递到 ejs 模板的数组的单个项目,并带有下一个按钮以切换单个项目
- javascript - 如何专注于内容可编辑 div 中的新块?