如何将仅包含XAML资源的文件放在DLL(引用)文件中,以供WPF应用程序使用?

3

我的WPF应用程序已经达到了复杂程度,因此将一些代码和其他资源放在引用文件(*.dll)中变得可取。

我相信我可以通过遵循众多应用程序的方法来解决这个问题。

然而,在这种特殊情况下,文件是两个XAML文件:

enter image description here

请问有人可以提供一个如何公开或发布XAML资源的示例吗?是否需要*.cs文件?

enter image description here

TIA

由@HighCore概述的XAML文件应该如下所示:

<Application x:Class="Application"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

1
这是一个非常好的问题,我赞同。提供一个最小化的示例将会非常感激。 - Travis Banger
1
@swiss_programmer - 你想将它们嵌入到你的dll中,并在运行时加载吗? - Rohit Vats
没错。我的问题是,由于某种原因,有时找不到资源。我重建了几次,祈祷了一下,摸了兔脚,敲了敲木头,然后哎呀!资源被找到并使用了。随着应用程序变得越来越复杂,我发现很难找到资源,所以我想通过将资源放在参考文件中来提高我的成功率。 - user3550325
1个回答

3
XAML ResourceDictionaries不会生成类。我不确定为什么你会期望这样的事情发生。
只需将所需的ResourceDictionary定义移动到单独的程序集中,然后使用Pack URI Syntax将这些资源合并到应用程序的资源中,在app.xaml中使用。
<Application ....>
   <Application.Resources>
      <ResourceDictionary>
         <ResourceDictionary.MergedDictionaries>
             <ResourceDictionary Source="pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml"/> 
         </ResourceDictionary.MergedDictionaries>
      </ResourceDictionary>
   </Application.Resources>
</Application>

你是在说我不需要真的把我的东西存储在*.dll(引用文件)中,并提供了一种使我的XAML内容可达的方法,对吗?(只是为了确保我们在同一页上!) - user3550325
@swiss_programmer 兄弟,是的,汇编语言是一个 "dll 文件"。你需要熟悉 .Net 术语。 - Federico Berasategui
是的,汇编语言就是“dll文件”。因此,我需要在Visual Studio中启动一个新项目,类型为“类库”,该项目将生成新的汇编(也称为DLL)。这个汇编最终会成为一个引用文件(供未来应用程序使用)吗? - user3550325
@swiss_programmer 是的。在 .Net 术语中,没有所谓的“参考文件”,所以我不确定你在说什么,但我猜你是指程序集引用。如果是这样,那么是的,你可以创建一个程序集,并根据需要从其他程序集中引用它。 - Federico Berasategui
@swiss_programmer 是的,.Net代码被编译成称为程序集的单元。包含.Net IL的Exe或.dll文件是一个程序集。 - Federico Berasategui
显示剩余3条评论

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