【问题标题】:WPF adding a third party ResourceDictionary to App.xaml?WPF 将第三方 ResourceDictionary 添加到 App.xaml?
【发布时间】:2025-12-21 12:15:12
【问题描述】:

这可能是一个愚蠢的问题,但我找不到答案......

我刚刚开始使用 WPF,并正在尝试将 ResourceDictionary 添加到我的项目中。

这里是这个:

https://monotone.codeplex.com/

所以我下载了 zip 文件,并将其解压缩到:

MyProjectDir/MonoTone

我已将以下内容添加到我的App.xaml

 <Application x:Class="TestWPF.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:TestWPF"
             xmlns:xcad="http://schemas.xceed.com/wpf/xaml/avalondock"
             StartupUri="MainWindow.xaml">

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>

                <ResourceDictionary Source="Monotone/Monotone.Colors.xaml" />
                <ResourceDictionary Source="Monotone/Monotone.Brushes.xaml" />
                <ResourceDictionary Source="Monotone/Monotone.MahApps.xaml" />
                <ResourceDictionary Source="Monotone/Monotone.xaml" />
                <ResourceDictionary Source="Monotone/Monotone.ExtendedWPFToolkit.xaml" />
                <ResourceDictionary Source="Monotone/Monotone.ColorBox.xaml" />

            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>

    </Application.Resources>

</Application>

在这里:

https://monotone.codeplex.com/wikipage?title=Installing%20Monotone&referringTitle=Documentation

现在 Intelsense 在 xaml 路径下划线,并且找不到文件。

我添加了对 dll 的引用。我错过了什么?

谢谢。

【问题讨论】:

  • 你能分享整个App.xaml吗?
  • 您是否确实将 xaml 文件添加到项目中(它们是否在解决方案资源管理器窗口中可见)?仅将它们提取到目录是不够的。

标签: c# wpf xaml


【解决方案1】:

首先,通过单击解决方案资源管理器中的显示所有文件图标,尝试在解决方案中包含 Monotone 目录。

其次,如下图所示,精确定位示例第一行中的确切路径。

【讨论】:

  • 谢谢!我已经这样做了,并查看了 sln 中的文件。 Intelsense 已停止抱怨,但我在构建时遇到很多错误:
  • 严重性代码说明项目文件行抑制状态错误找不到类型“nc:Spinner”。确认您没有丢失程序集引用并且所有引用的程序集都已构建。 TestWPF D:\TestWPF\TestWPF\Monotone\Monotone.ColorBox.xaml 101
  • 看到您的评论,无法比@Joshua Miller 做出更好的回应。这也是可以接受的答案,完全同意。
【解决方案2】:

明确回答您的问题:Visual Studio 抱怨是因为您需要将 Monotone 文件(来自发行版 zip)添加到名为“Monotone”的文件夹下的项目中。 Janis S's answer 已经说明了这一点。

不幸的是,Monotone 项目包含对其他项目的一些依赖项...具体来说,您会注意到它引用了 ColorBox 控件,可以在 CodePlex 上找到它,它还依赖于一些 Xceed 程序集.没有这些,您的项目将无法构建。

引用外部依赖的几个例子是:

xmlns:xtk="http://schemas.xceed.com/wpf/xaml/toolkit"
xmlns:nc="http://schemas.ncore.com/wpf/xaml/colorbox"
xmlns:conv="clr-namespace:Xceed.Wpf.Toolkit.Converters;assembly=Xceed.Wpf.Toolkit"
xmlns:Behaviours="clr-namespace:MahApps.Metro.Behaviours"
xmlns:mm="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:mmm="http://metro.mahapps.com/winfx/xaml/shared"

此时你有三个选择

  1. 删除对外部程序集的所有引用。
  2. 或者找出需要哪些程序集并添加对这些程序集的引用。
  3. 或者找一个不同的深色主题来使用。

此时选项 3 可能是最好的选项,因为 CodePlex 是 shutting down soon 并且似乎没有维护 Monotone。快速的 Google 搜索会产生一些免费的 WPF 深色主题,这些主题仍在运行,可以替代使用。

编辑

如果您真的想使用 Monotone,请转到他们的 downloads 页面并获取示例应用程序。所有缺少的 DLL 都包含在该下载中(您需要将这些 DLL 包含在您的项目中和add them as references)。

【讨论】:

  • @Joshua Miller,你破解了它,好在你也找到了使用 Monotone 的方法,如果绝对没有其他选择,但是,因为第 3 个选项,投票赞成。
【解决方案3】:

我可能迟到了,但要澄清一下:

  • 我是 Monotone 的创建者(这是我用于我开发的 IDE 的主题,现在已过时)。我不介意您是否为您的应用程序选择另一个/更好的深色主题,此时它已经很老了。

  • Monotone 现在在 GitHub 上“维护”。好吧,现在它或多或少已经过时了,因为我不再使用 C#。但是,如果您(或其他任何人)对此有特定问题,请随时在 GitHub 上提交问题或解决该问题的拉取请求。

  • 您只需将 Monotone.Colors.xamlMonotone.Brushes.xamlMonotone.xaml 的 XAML 文件添加到默认 WPF 控件的 ResourceDictionary.MergedDictionaries。包括在这个订单中。如果我没记错的话,文件必须设置为EmbeddedResource。就是这样。

  • Monotone.ExtendedWPFToolkit.xaml 仅在您使用(并且想要主题化)ExtendedWPFToolkit 控件时才需要。同样适用于Monotone.MahApps.xamlMonotone.ColorBox.xaml。所以,这些都是可选的。它保存在单独的文件中,以避免依赖于您可能不使用的库

  • 您不需要 DLL 来设置标准 WPF 控件的样式

  • 由于 CodePlex 的关闭,Wiki 页面消失了。我可能会深入研究代码并在 GitHub 上重新创建它(或者甚至更好地将其添加到 repo 本身),你有一个有用的文档。

  • 如前所述,SampleApplication 包含一个工作示例,您可以将其用作模板和/或了解其工作原理

【讨论】: