2011-10-10 45 views
3

我有一個在棱鏡庫的上下文中從xaml文件加載模塊的問題。 用於模塊的XAML看起來像這樣:C#從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 

所以,問題是什麼樣的價值,那麼「參考」屬性期望?它是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
  1. ref屬性期望應用路徑下的路徑,如果你使用相對路徑或絕對路徑,這通常不工作,因爲你不知道在設計時的安裝文件夾。要讓模塊目錄找到你的模塊,最好將模塊複製到應用程序目錄並使用相對路徑。
  2. 模塊類型屬性必須是實現IModule接口的模塊dll中的類型。
  3. 是的,命名空間必須包括在內。
  4. 見答案1

有關您的問題更多的建議,看看在第四章中,棱鏡4.0 模塊化應用開發 - 2010十一月手冊。

+0

謝謝。在訪問了一些論壇之後,有很多關於使用xaml進行模塊加載的討論,並且它不那麼容易(例如ref必須以file://開頭)。所以我會用app配置文件的方式。 – Juergen