【Prism】Region 关联页面

MSDN教程:https://msdn.microsoft.com/en-us/library/ff921141(v=pandp.40).aspx
看完后温习一遍,就算是中文懒人包吧。
这是个利用ArcGIS Earth API 写的一个 Tool。


一. 下载Prism


如图所示,在NuGet包中下载对应的Prism:
【Prism】Region 关联页面_第1张图片




二. 设置Bootstrapper


<1> 在Prism框架中,从Bootstraaper启动程序,新建Bootstrapper类。

using Prism.Unity;
using Prism.Modularity;
using Prism.Regions;
using StressTestToolPrism.Views;

namespace StressTestToolPrism
{
    class Bootstrapper : UnityBootstrapper
    {

        protected override DependencyObject CreateShell()
        {
            return new ShellView();
        }

        protected override void InitializeShell()
        {
            base.InitializeShell();
            Application.Current.MainWindow = (Window)this.Shell;
            Application.Current.MainWindow.Show();
        }       
    }
}



<2> 打开App.cs , 重写OnStartup方法。

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;

namespace StressTestToolPrism
{
    /// 
    /// Interaction logic for App.xaml
    /// 
    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            var bootstrapper = new Bootstrapper();
            bootstrapper.Run();
        }
    }
}



<3> 打开 App.xaml , 删除启动项。

<Application x:Class="StressTestToolPrism.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:StressTestToolPrism">
    <Application.Resources>

    Application.Resources>
Application>

这样,程序就从Bootstrapper类启动。




三 . 在Xaml中划分Region


<1>在ShellView.xaml中划分区域。

"StressTestToolPrism.ShellView"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:prism="http://www.codeplex.com/prism" 
        xmlns:local="clr-namespace:StressTestToolPrism"
        mc:Ignorable="d"
        Title="ShellView" Height="600" Width="600" WindowStartupLocation="CenterScreen">
    <Grid>
        <Grid.RowDefinitions>
            "80"/>
            "440"/>
            "*"/>
        Grid.RowDefinitions>

        <Grid Grid.Row="0" Grid.ColumnSpan="2">
            "False" prism:RegionManager.RegionName="ConnectEarthRegion"/>
        Grid>

        <Grid Grid.Row="1" Grid.ColumnSpan="2">
            "False" prism:RegionManager.RegionName="AddDataRegion"/>
        Grid>

        <Grid Grid.Row="2" Grid.ColumnSpan="2">
            "False" prism:RegionManager.RegionName="RunAndExportRegion"/>
        Grid>
    Grid>        

划分的大小:
【Prism】Region 关联页面_第2张图片


<2>每个Region的View。
这里每个Region有它们对应的View,由于View的代码较多,这里只给出效果图

这里写图片描述


ConnectToEarth:
【Prism】Region 关联页面_第3张图片


AddData:
【Prism】Region 关联页面_第4张图片


RunAndExport:
【Prism】Region 关联页面_第5张图片




四. 注册Region


<1>由于我这个程序较小,不需要很多Module,所以没有新建程序集。直接新建ShellViewModule类,注册Region以及对应的View

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Prism.Unity;
using Prism.Modularity;
using Prism.Regions;
using StressTestToolPrism.Views;

namespace StressTestToolPrism
{
    class ShellViewModul:IModule
    {
        // view region register
        private readonly IRegionManager regionManager;

        public void Initialize()
        {
            regionManager.RegisterViewWithRegion("ConnectEarthRegion", typeof(ConnectToEarth));
            regionManager.RegisterViewWithRegion("AddDataRegion", typeof(AddData));
            regionManager.RegisterViewWithRegion("RunAndExportRegion", typeof(RunAndExport));
        }

        public ShellViewModul(IRegionManager regionManager)
        {
            this.regionManager = regionManager;
        }
    }
}


<2>在Bootstrapper中重写ConfigureModuleCatalog方法,添加ShellViewModul。

 protected override void ConfigureModuleCatalog()
        {
            base.ConfigureModuleCatalog();
            ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog;
            moduleCatalog.AddModule(typeof(ShellViewModul));
        }





五. 效果展示


这样,我们就把每个Region和它们对应的View关联起来了。结果如图所示:
【Prism】Region 关联页面_第6张图片






==============
2018.02.24
==============

你可能感兴趣的:(WPF)