MSDN教程:https://msdn.microsoft.com/en-us/library/ff921141(v=pandp.40).aspx
看完后温习一遍,就算是中文懒人包吧。
这是个利用ArcGIS Earth API 写的一个 Tool。
一. 下载Prism
如图所示,在NuGet包中下载对应的Prism:
二. 设置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>
划分的大小:
<2>每个Region的View。
这里每个Region有它们对应的View,由于View的代码较多,这里只给出效果图
ConnectToEarth:
AddData:
RunAndExport:
四. 注册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关联起来了。结果如图所示:
==============
2018.02.24
==============