2012-10-17 90 views
2

我是WPF和Prism中的新成員。我想知道是否應該爲每個新窗口創建新的引導程序?例如,我有「Window1」,我從ListBox中選擇元素,然後單擊按鈕「ShowDetails」,在新窗口「Window2」中,我應該看到我選擇的細節。我有他們的窗口和模塊,但我想知道如何以及在哪裏可以爲「Window2」註冊模塊「Module2」?我應該爲每個WPF窗口創建單獨的Bootstrapper嗎?

我的引導程序示例。

class Bootstrapper : UnityBootstrapper 
{ 
    protected override DependencyObject CreateShell() 
    { 
     var mainWindow = new Window1(); 
     mainWindow.Show(); 
     return mainWindow; 
    } 

    protected override IModuleCatalog GetModuleCatalog() 
    { 
     var moduleCatalog = new ModuleCatalog(); 
     moduleCatalog.AddModule(typeof(Module1)); 

     return moduleCatalog; 
    } 
} 

"App.xaml.cs" 

public partial class App : Application 
{ 
    public App() 
    { 
     var bootstrapper = new Bootstrapper(); 
     bootstrapper.Run(); 
    } 
} 
+0

引導程序是一個一體化的單人展示......理論上應該只在應用程序中存在一個引導程序。如果你有'moduleCatalog.AddModule(typeof(Module1));',模塊2還應該有一行 – KyorCode

+0

但是wpf如何知道Module2是爲Window2註冊的? 在Window1中我有「Region1」,在Window2中有「Region2」。 當我嘗試在引導程序中註冊Module2時,出現錯誤「區域管理器不包含Region2區域。」 – Sanya530

+0

我可以建議你開始使用Caliburn.Micro,它比PRISM更容易,而且註冊的東西更少。 - 爲了進一步幫助您,並且就我的PRISM知識而言,您應該在RegionManager中註冊您的Region2 – KyorCode

回答

1

引導程序通常用在WPF應用程序的啓動類中。通常這將是標準模板中的App.xaml.cs文件,它是App.xaml文件的代碼隱藏類。您重寫方法OnStartup並實例化您的Bootstrapper並調用其運行方法。您可以延遲引導程序的啓動,直到覆蓋OnStartup,而不是在App.xaml.cs類的構造函數中寫入該引導程序。然後,您將在Prism中使用RegionManager並在您的XAML中定義區域。如果你有多個獨立的Windows,這與Prism打算使用的方式有點不同。您可以在Prism源代碼中的Bootstrapper類的CreateShell方法中定義MainWindow或Shell的概念。相反,有一個主窗口和定義區域,並可能考慮創建一個機制來顯示對話框中的其他窗口。可以將MainWindow劃分爲多個區域,並通過RegionManager注入用戶控件。這是通過RegionManager的activate方法完成的。

通過閱讀模式和實踐指南啓動,也許考慮看看邁克Taulty的棱鏡視頻。第一視頻是在這裏:

Prism & Silverlight: Part 1 - Taking Sketched Code Towards Unity

有視頻系列(10個),這將有助於您開始使用PRISM許多影片。

如何定義在XAML的區域的實例示下一個:

<ItemsControl Regions:RegionManager.RegionName="MainRegion" /> 

棱鏡區域可以被激活,例如通過綁定到一個按鈕DelegateCommand或ICommand的是下面的代碼:

var viewA = new ViewA(); 
var regionA = (new RegionManager()).Regions["RegionA"]; 
regionA.Activate(viewA); 

你必須定義實現的IModule接口和這些添加到您的ModuleCatalog因爲你已經與ModuleA完成多個模塊。

相關問題