一个基本的例子,没有viewmodel,没有使用Behaviors
大体步骤:
1、创建应用程序
2、使用”Shell”替换”MainWindow”(silverlight替换MainPage)
3、创建Bootstrapper(引导程序)
4、创建模块
5、加入视图
1、创建程序
使用vs 2010创建wpf或silverlight应用程序,添加以下引用
Microsoft.Practices.Prism
Microsoft.Practices.Prism.MefExtensions
System.ComponentModel.Composition
2、修改MainWindow.cs或MainPage.cs为Shell.cs
在代码视图中,右键点MainWindow或MainPage选择重构–〉重命名,命名为Shell
修改App.xaml
wpf程序去掉starturi属性
修改App.xaml.cs
Startup事件中
private void Application_Startup(object sender, StartupEventArgs e){Bootstrapper bootstrapper = new Bootstrapper();bootstrapper.Run();}
导出Shell
[Export]public partial class Shell : Window{public Shell(){InitializeComponent();}}
3、创建Bootstrapper
添加Bootstrapper类,注意wpf/silverlight在InitializeShell中的区别
using Microsoft.Practices.Prism.MefExtensions;using System.ComponentModel.Composition.Hosting;using System.IO;namespace WpfApplication{class Bootstrapper : MefBootstrapper{protected override System.Windows.DependencyObject CreateShell(){return this.Container.GetExportedValue<Shell>();}protected override void InitializeShell(){base.InitializeShell();#if SILVERLIGHTApp.Current.RootVisual = (Shell)this.Shell;#elseApp.Current.MainWindow = (Shell)this.Shell;App.Current.MainWindow.Show();#endif}protected override void ConfigureAggregateCatalog(){base.ConfigureAggregateCatalog();//加载自身this.AggregateCatalog.Catalogs.Add(new AssemblyCatalog(this.GetType().Assembly));//加载目录if (Directory.Exists("./Modules")){this.AggregateCatalog.Catalogs.Add(new DirectoryCatalog("./Modules"));}}}}
4、创建模块
加入以下引用
Microsoft.Practices.Prism
Microsoft.Practices.Prism.MefExtensions
System.ComponentModel.Composition
加入模块初始化用的类如:MarketModule,实现Initialize
[ModuleExport(typeof(MarketModule))]public class MarketModule: IModule{[Import]public IRegionManager TheRegionManager { private get; set; }public void Initialize(){TheRegionManager.RegisterViewWithRegion("MarketRegion", typeof(MarketView));}}
5、加入视图,并导出
[Export(typeof(MarketView))]public partial class MarketView : UserControl{public MarketView(){InitializeComponent();}}
6、修改Shell.xaml
加入prism命名空间
xmlns:prism=”http://www.codeplex.com/prism”
Grid中加入
<ItemsControl prism:RegionManager.RegionName=”MarketRegion”/>
7、应用程序中创建文件夹Modules
在Modules文件中,加入现有项(以链接方式)”模块名称.dll” 如Modules.Market.dll
模块名称.dll,复制到目录属性选择”始终复制”或”如果较新则复制”
转载:http://www.cnblogs.com/ningth/archive/2011/12/04/2275133.html