WPF Prism框架介绍

初始化

安装框架

在这里插入图片描述

新建项目

在这里插入图片描述

基本功能

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.
  • 15
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值