从XAML文件创建模块目录
本文关键字:模块 文件创建 XAML | 更新日期: 2023-09-27 18:10:58
我在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在同一文件夹中?谢谢,Juergen
- 如果你使用相对路径或者绝对路径,ref属性期望应用程序路径下面的路径,这通常不起作用,因为你在设计时不知道安装文件夹。要让模块目录找到您的模块,您最好将模块复制到应用程序目录并使用相对路径。
- 模块类型属性必须是模块dll中实现IModule接口的类型。
- 是,必须包含命名空间。
- 见答案1