1、将App.xaml中的StartupUri="MainWindow.xaml"删除。
2、使用NuGet安装Prism.Wpf、Prism.Core、Prism.Unity。
3、添加类“Bootstrapper”,编辑如下:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using Microsoft.Practices.Unity; 7 using System.Windows; 8 using Prism.Unity; 9 using ViewDiscovery.Views; 10 11 namespace ViewDiscovery 12 { 13 class Bootstrapper:UnityBootstrapper 14 { 15 protected override DependencyObject CreateShell() 16 { 17 return Container.Resolve<MainWindow>(); 18 } 19 20 protected override void InitializeShell() 21 { 22 Application.Current.MainWindow.Show(); 23 } 24 } 25 }
4、创建文件夹Views,将MainWindow.xaml移动到此文件夹中。向Views文件夹中添加ViewA.xaml。
1 <Window x:Class="ViewDiscovery.Views.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 5 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 6 xmlns:local="clr-namespace:ViewDiscovery" 7 xmlns:prism="http://prismlibrary.com/" 8 mc:Ignorable="d" 9 Title="Shell" Height="450" Width="800"> 10 <Grid> 11 <ContentControl prism:RegionManager.RegionName="ContentRegion"/> 12 </Grid> 13 </Window>
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Windows; 7 using System.Windows.Controls; 8 using System.Windows.Data; 9 using System.Windows.Documents; 10 using System.Windows.Input; 11 using System.Windows.Media; 12 using System.Windows.Media.Imaging; 13 using System.Windows.Navigation; 14 using System.Windows.Shapes; 15 using Prism.Regions; 16 17 namespace ViewDiscovery.Views 18 { 19 /// <summary> 20 /// MainWindow.xaml 的交互逻辑 21 /// </summary> 22 public partial class MainWindow : Window 23 { 24 public MainWindow(IRegionManager regionManager) 25 { 26 InitializeComponent(); 27 //View discovery 28 regionManager.RegisterViewWithRegion("ContentRegion", typeof(ViewA)); 29 } 30 } 31 }
1 <UserControl x:Class="ViewDiscovery.Views.ViewA" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 5 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 6 xmlns:local="clr-namespace:ViewDiscovery.Views" 7 mc:Ignorable="d" 8 d:DesignHeight="300" d:DesignWidth="300"> 9 <Grid> 10 <TextBlock Text="Text A" FontSize="38"/> 11 </Grid> 12 </UserControl>