Prism框架初使用

一、创建普通WPF文件

在这里插入图片描述

二、NuGet添加Prism框架

在这里插入图片描述

三、建立ViewModels和Views文件夹,并且分别建立三个视图模块,以及MainViewModel类,处理视图数据

View1 View2 View3

在这里插入图片描述
三个视图页面模块为

<UserControl x:Class="PrismCSND.Views.View1"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:PrismCSND.Views"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800">
    <Grid>
        <TextBlock Text="这是页面一" FontSize="80" 
                   HorizontalAlignment="Center"
                   VerticalAlignment="Center"/>
    </Grid>
</UserControl>




<UserControl x:Class="PrismCSND.Views.View2"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:PrismCSND.Views"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800">
    <Grid>
        <TextBlock Text="这是页面二" FontSize="80" 
                   HorizontalAlignment="Center"
                   VerticalAlignment="Center"/>
    </Grid>
</UserControl>






<UserControl x:Class="PrismCSND.Views.View3"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:PrismCSND.Views"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800">
    <Grid>
        <TextBlock Text="这是页面三" FontSize="80" 
                   HorizontalAlignment="Center"
                   VerticalAlignment="Center"/>
    </Grid>
</UserControl>

四、把第一级页面命名为MainView

并且修改其中的配置
代码为

<!--引入 xmlns:prism空间,并且把AutoWireViewModel开启自动注入,它会识别该规范下的命名-->
    <Window x:Class="PrismCSND.Views.MainView"
        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:local="clr-namespace:PrismCSND.Views"
        xmlns:prism="http://prismlibrary.com/"
        prism:ViewModelLocator.AutoWireViewModel="True"
        mc:Ignorable="d"
        Title="MainView" Height="450" Width="800">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition />
        </Grid.RowDefinitions>
        <StackPanel Orientation="Horizontal" >
            <Button Content="打开页面一" Margin="5" Command="{Binding OpenCommand}" CommandParameter="View1"/>
            <Button Content="打开页面二" Margin="5" Command="{Binding OpenCommand}" CommandParameter="View2"/>
            <Button Content="打开页面三" Margin="5" Command="{Binding OpenCommand}" CommandParameter="View3"/>
        </StackPanel>
        <!--使用Prism设置当前模块区域内的名字-->
        <ContentControl Grid.Row="1" prism:RegionManager.RegionName="ContentRegion"/>
    </Grid>
</Window>

五、MainViewModel类

namespace PrismApp.ViewModels
{
    public class MainViewModel : BindableBase
    {
        /// <summary>
        /// 创建一个带有参数的DelegateCommand委托
        /// </summary>
        ///
        public DelegateCommand<string> OpenCommand { get; set; }
        /// <summary>
        /// 实例化一个DelegateCommand去实现注入
        /// </summary>
        /// <param name="regionManager"></param>
        public MainViewModel(IRegionManager regionManager)
        {
            OpenCommand = new DelegateCommand<string>(Open);
            this.regionManager = regionManager;
        }
        private readonly IRegionManager regionManager;
        private void Open(string obj)
        {
            //通过IRegionManager接口获取全局的可用区域
            //往这个区域动态的去设置这个内容
            //内容设置当方式是通过依赖注入去设置
            regionManager.Regions["ContentRegion"].RequestNavigate(obj);
        }
    }
}

六、App.xaml.cs类

namespace PrismApp
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : PrismApplication
    {
        protected override Window CreateShell()
        {
            return Container.Resolve<MainView>();
        }
        /// <summary>
        /// 通过依赖注入的方式交给框架去处理,让框架能够识别到该视图可以被prism识别了
        /// </summary>
        /// <param name="containerRegistry"></param>
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            containerRegistry.RegisterForNavigation<ViewA>();
            containerRegistry.RegisterForNavigation<ViewB>();
            containerRegistry.RegisterForNavigation<ViewC>();
        }
    }
}
青春、不回头
关注 关注
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C#WPF Prism框架应用实例
qq_30725967的博客
10-20 818
本文实例演示C#WPF Prism框架应用实例
WPF Prism实例(多个实例包含Prism各个重要概念实例)
03-28
1、Prism各个重要概念实例 2、MVVM架构 3、WPF使用Prism
Prism-master
02-14
实例的方式详细说明WPF Prism框架的运行和模块调用关系。
Prism框架实例、MEF框架实例
03-21
本解决方案中包含3个程序,1、简单的LocalDB数据的连接,项目名称是LocalDBOperate;2、Prism框架的简单实例,项目名称是Desktop.MainWindow;3、MEF的简单实例,项目名称MEFTest
Prism框架简介及其项目创建方法,2024年最新【原理+实战+视频+源码】
最新发布
2401_84183492的博客
04-17 498
模块之间可以松散组合,在对整个Prism中模块化设计思想有一个认识之前我们先来看看下面这张图,通过这张图从而让我们对整个Module有一个更加清晰的认识。是一种用于开发模块化、可重用和可测试的WPF应用程序的框架。它提供了一种简单而强大的方式来管理复杂应用程序的代码和构建高度可扩展的应用程序。安装完成后,重启vs2022,创建项目,就可以看到wpfprism创建项目模板。从上面的图中我们知道Module是位于Shell的下一层的概念,重新打开vs2022后,可以看到新增了Prism相关的项目模板。
Prism MVVM应用 登陆后切换主窗体实现
04-25
应用场景        使用Prism7开发WPF程序,编码采用MVVM形式。当程序启动时,首先进入一个登陆界面,进行登陆认证,认证成功后转入程序布局主窗口。 设计思路         WPF程序框架搭建后,程序中存一个Shell.xaml,相当于表演者的唯一舞台。登陆窗体(以下简称 LoginView)和程序布局主窗体(以下简称 MainView),分别利用IRegionManager进行管理,根据需要在不同时机相继出场表演。所有操作均由各自ViewModel(简称VM)代码完成。        1.当程序启动后,Shell通过VM,使用RegionManager的Add方法激活LoginView。登陆操作后,发送消息loginState消息。该消息的发送是通过一个自定义的消息发送和订阅类来完成的(程序中将定义为:LoginSentEvent)。        2.Shell通过VM接受LoginSentEven传递的loginState来接收登陆成功与否的消息,如果登陆成功,则使用RegionManager的Deactivate方法使LoginView处于非激活隐藏。利用 Add方法使MainView视图激活。如果不成功呢,当然不改变视图了,继续登陆操作。
prism模板 vs插件
03-08
prism模板 vs插件
WPF Prism框架
07-08
很漂亮的界面,内含各种控件的样式及模板,下载把
Prism框架学习
故里2130
05-26 6386
1.建立一个项目,使用.net5.0框架 2.
WPF Prism介绍和简单实例(基于.net framework)
lvxingzhe3的博客
03-28 6055
WPF Prism介绍和简单实例
WPFPrism框架
xiaochuideai的博客
08-08 4874
融合官方文档和个人理解并参考其他博主的相关文章,对prism框架下的各个功能模块进行了较为详细的整理,并通过案例代码的方式更加直观的呈现相关函数的功能。以方便与自我复习和理解。
Prism框架简介及其项目创建方法
huaqianzkh的专栏
02-21 738
WPF框架是一种用于开发模块化、可重用和可测试的WPF应用程序的框架。它提供了一种简单而强大的方式来管理复杂应用程序的代码和构建高度可扩展的应用程序。
基于Prism的MVVM简单实例
11-10
实例是一个基于Prism的MVVM的简单实例,实现对数据的添加,修改,删除,并通知UI界面显示.也就是常说的数据驱动UI. 修改与删除需要选中行进行操作.
prism中文翻译教程
01-09
prism框架 中文翻译介绍,WPF开发框架。用有道辞典翻译的。
WPF开发MVVM架构Prism框架基础功能
12-08
学者如何使用prism框架实现mvvm中的数据显示绑定及command绑定
WPF,Prism框架
05-28
MVVM
Prism Manual.pdf Prism8框架官方手册 MD 文件转pdf
10-27
WPF Prism
Prism写的客户端框架demo
11-17
Demo.Prism40。
wpf prism框架
06-24
使用WPF Prism框架可以快速地开发出灵活的WPF应用程序,从而提高代码质量和开发效率,减少代码的维护难度。 WPF Prism框架具有以下的特点: 1. 扩展性:可以轻松地添加新的模块、服务和组件,同时也可以快速替换...

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 威纶触摸屏宏指令编程,字符串相关函数介绍与使用... 6260
  • java出租车计费 2061
  • enableDefaultTyping过期 1133
  • 博图与halcon C#的混合编程 1116
  • 一维数组的基本用法 1008

最新评论

  • 设置一个类,并对数组进行操作

    Abro.: 表情包

  • 建Web时遇到的一些问题

    不正经的kimol君: 支持博主,欢迎回赞哦~

  • MySQL的初级和高级

    潇洒小白: 写的不错,顶个贴,点个赞,嘿嘿!

  • java集合的一些用法

    不正经的kimol君: TQL,大大大佬

  • 多线程管理

    潇洒小白: 反手就是一个赞!

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • WPF学习笔记
  • 威纶触摸屏宏指令编程,字符串相关函数介绍与使用...
  • 博图与halcon C#的混合编程
2023年1篇
2022年3篇
2021年5篇
2020年26篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

PHP网站源码辽阳关键词排名包年推广报价无锡关键词排名推荐咸宁网站优化按天收费公司德宏网站推广工具公司坪地网站推广张家界企业网站制作报价潜江网站定制哪家好鹤壁网站建设赣州网站建设设计推荐哈密阿里店铺运营公司唐山网站seo优化哪家好茂名seo排名推荐喀什百度网站优化推荐西宁网站优化推广哪家好宝安企业网站建设公司安顺高端网站设计哪家好达州网站搜索优化焦作百度网站优化公司南山网络推广多少钱台州关键词按天计费多少钱南澳网站搭建报价临沧网站优化按天收费公司驻马店设计公司网站价格云浮关键词按天扣费推荐衡阳网页设计淮南百姓网标王海西网页设计多少钱坪地网站搭建哪家好怒江营销型网站建设推荐大连网站建设价格歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化