WPF向App.xaml添加第三方ResourceDictionary?

时间:2017-09-07 18:39:42

标签: c# wpf xaml

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

我刚刚开始使用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的引用。我错过了什么?

谢谢。

3 个答案:

答案 0 :(得分:2)

首先,通过单击解决方案资源管理器中的show all files图标,尝试在解决方案中包含Monotone目录。

其次,如下面的屏幕所示,精确确定路径,如示例第一行所示。 Example

答案 1 :(得分:1)

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

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

对外部依赖项的引用的一些示例是:

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. 或者找一个不同的黑暗主题来使用。
  4. 此时选项3可能是最好的选项,因为CodePlex Xceed并且Monotone似乎没有得到维护。快速谷歌搜索会产生一些免费的WPF黑暗主题,这些主题仍在运行,可以代替使用。

    修改

    如果确实想要使用Monotone,请转到他们的shutting down soon页面并抓取示例应用程序。所有缺少的DLL都包含在该下载中(您需要在项目中包含这些DLL并downloads)。

答案 2 :(得分:0)

我参加聚会可能已经很晚了,但要澄清一下:

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

  • Monotone现在已在GitHub上“维护”。好吧,由于我不再使用C#,这时或多或少有些陈旧。但是,如果您(或其他任何人)对此有特定的问题,请随时在GitHub上提交问题或解决该问题的请求。

  • 您只需要添加XAML的文件Monotone.Colors.xamlMonotone.Brushes.xamlMonotone.xamlResourceDictionary.MergedDictionaries默认WPF控件。按此顺序包括。如果我没记错的话,必须将文件设置为EmbeddedResource。就是这样。

  • Monotone.ExtendedWPFToolkit.xaml仅在使用ExtendedWPFToolkit控件(并希望为其主题)时才需要。 Monotone.MahApps.xamlMonotone.ColorBox.xaml相同。因此,这些是可选的。它保存在单独的文件中,以避免依赖于您可能不使用的库

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

  • 由于CodePlex的关闭,Wiki-Pages也已消失。我可能会深入研究代码,然后在GitHub上重新创建代码(甚至最好将其添加到仓库本身),以获取有用的文档。

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