gpt4 book ai didi

C# 从 XAML 文件创建模块目录

转载 作者:行者123 更新时间:2023-11-30 18:02:58 25 4
gpt4 key购买 nike

我在 prism 库上下文中从 xaml 文件加载模块时遇到问题。模块的 xaml 如下所示:

<Modularity:ModuleCatalog xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:Modularity="clr-namespace:Microsoft.Practices.Prism.Modularity;assembly=Microsoft.Practices.Prism">
<Modularity:ModuleInfoGroup InitializationMode="WhenAvailable">
<Modularity:ModuleInfo Ref="file://HelloWorldModule.dll" ModuleName="HelloWorldModule" ModuleType="HelloWorldModule.Views.HelloWorldView, HelloWorldModule, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</Modularity:ModuleInfoGroup>

到目前为止,解析器找到了这个 xaml,但没有找到 HelloWorldModule.dll。我在文档中找不到任何有用的东西,因为这些都是针对 Silverlight 的,但我的项目是一个 WFP 应用程序。

shell.exe 的相对路径是:

\Projects\QFX_Shell\bin\Debug

HelloWorldModule.dll 的路径是:

\Projects\HelloWorldModule\bin\Debug

所以问题是“Ref”属性需要什么值?它是 HelloWorldModule.dll 的绝对路径吗?

第二个问题是 ModuleType 属性应该有什么值:

namespace HelloWorldModule.Views
{
/// <summary>
/// Interaction logic for HelloWorldView.xaml
/// </summary>
public partial class HelloWorldView : UserControl
{
public HelloWorldView()
{
InitializeComponent();
}
}
}

类类型名称是否包含命名空间?

ModuleType="HelloWorldModule.Views.HelloWorldView, HelloWorldModule...

下一个问题是,HelloWorldModule.dll 是否与 Shell.exe 位于同一文件夹中?谢谢,于尔根

最佳答案

  1. 如果您使用相对路径或绝对路径,则 ref 属性需要一个低于应用程序路径的路径,这通常不起作用,因为您在设计时无法知道安装文件夹。要让模块目录找到您的模块,您最好将模块复制到应用程序目录并使用相对路径。
  2. 模块类型属性必须是实现 IModule 接口(interface)的模块 dll 中的类型。
  3. 是的,必须包含命名空间。
  4. 查看答案 1

有关您的问题的更多建议,请查看 Prism 4.0 - 2010 年 11 月 手册的第 4 章模块化应用程序开发

关于C# 从 XAML 文件创建模块目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7717766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com