初始化
安装框架
新建项目
基本功能
Region
- 新建View
在Views文件架下新建UserControl,名为View1
系统会自动创建View和ViewModel,并且完成了相互关联和IOC注册
- 注入到MainWindow的Region中
MainWindow.xaml
<Window x:Class="PrismDemo.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
Title="{Binding Title}" Height="350" Width="525" >
<Grid>
<ContentControl prism:RegionManager.RegionName="ContentRegion" />
</Grid>
</Window>
MainWindowViewModel.cs
using Prism.Mvvm;
using Prism.Regions;
using PrismDemo.Views;
namespace PrismDemo.ViewModels
{
public class MainWindowViewModel : BindableBase
{
private string _title = "Prism Application";
private readonly IRegionManager _regionManager;
public string Title
{
get {
return _title; }
set {
SetProperty(ref _title, value); }
}
public MainWindowViewModel(IRegionManager regionManager)
{
_regionManager = regionManager;
_regionManager.RegisterViewWithRegion<View1>("ContentRegion");
}
}
}
Navigation
- 新建ViewA和ViewB
- 注册ViewA和ViewB
App.xaml.cs
using Prism.Ioc;
using PrismDemo.Views;
using System.Windows;
namespace PrismDemo
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App
{
protected override Window CreateShell()
{
return Container.Resolve<MainWindow>();
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterForNavigation<ViewA>();
containerRegistry.RegisterForNavigation<ViewB>();
}
}
}
- 改写ViewA
ViewA
<UserControl x:Class="PrismDemo.Views.ViewA"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True">
<Grid>
<Label Content="{Binding NowString}" Background="Red"></Label>
</Grid>
</UserControl>
ViewAViewModel
using Prism.Mvvm;
using Prism.Regions;
using System;
using System.Windows;
namespace PrismDemo.ViewModels
{
public class ViewAViewModel : BindableBase, IConfirmNavigationRequest
{
private string _nowString = "ViewA";
public ViewAViewModel()
{
}
public string NowString
{
get => _nowString;
set {
SetProperty(ref _nowString, value); }
}
public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
{
var result = true;
if (MessageBox.