2

我是 WPF 和 Prism 的新手。我想知道是否应该为每个新窗口创建新的引导程序?例如,我有“Window1”,我从 ListBox 中选择元素并单击按钮“ShowDetails”,在新窗口“Window2”中,我应该看到我的选择的详细信息。我有它们的窗口和模块,但我想知道如何以及在哪里可以为“Window2”注册模块“Module2”?

我的引导程序示例。

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();
    }
}
4

1 回答 1

1

Bootstrapper 通常用于 WPF 应用程序的启动类中。通常这将是标准模板中的文件 App.xaml.cs,它是 App.xaml 文件的代码隐藏类。您覆盖方法 OnStartup 并实例化您的引导程序并调用其运行方法。您可以将引导程序的启动延迟到覆盖 OnStartup 之前,而不是将其写入 App.xaml.cs 类的构造函数中。然后,您将在 Prism 中使用 RegionManager 并在 XAML 中定义区域。如果您有多个独立的 Windows,这与 Prism 的预期使用方式有些不同。您可以在 Prism 源代码中的 Bootstrapper 类的 CreateShell 方法中定义 MainWindow 或 Shell 的概念。反而,有一个主窗口并定义区域,也许考虑创建一种在对话框中显示其他窗口的机制。可以将 MainWindow 划分为多个区域并通过 RegionManager 注入用户控件。这是通过 RegionManager 的 activate 方法完成的。

从阅读模式和实践指南开始,或许可以考虑观看 Mike Taulty on Prism 的视频。第一个视频在这里:

Prism 和 Silverlight:第 1 部分 - 将草图代码迈向统一

视频系列中有许多视频(共 10 个)可帮助您开始使用 PRISM。

下面显示了如何在 XAML 中定义区域的示例:

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

可以激活 PRISM 区域,例如通过绑定到按钮的 DelegateCommand 或 ICommand 是以下代码:

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

您必须定义多个实现 IModule 接口的模块,并将它们添加到您的 ModuleCatalog 中,就像您对 ModuleA 所做的那样。

于 2012-11-17T04:24:29.800 回答