Prism框架的Regions,可以把用户控件、窗体等附加到主窗体指定的控件中。

【实战1】

1、新建Prism Blank App(WPF) 项目:Demo0810

Views文件夹处,鼠标右键——添加——新建项——Prism——Prism UserControl(WPF),名称默认

MainWindow.xaml.cs代码:

  1. using System.Windows;
  2. using Prism.Regions; //引入Regions
  3.  
  4. namespace Demo0810.Views
  5. {
  6. public partial class MainWindow : Window
  7. {
  8. public MainWindow(IRegionManager regionManager) //定义变量
  9. {
  10. InitializeComponent();
  11. //将PrismUserControl1用户控件加载到主窗体的ContenRegion控件中
  12. regionManager.RegisterViewWithRegion("ContentRegion", typeof(PrismUserControl1));
  13. ////或者
  14. //PrismUserControl1 viewA = new PrismUserControl1(); //new出一个类的对象
  15. //_regionManager.AddToRegion("ContentRegion", viewA);
  16. }
  17. }
  18. }

PrismUserControl1.xaml代码:其他文件原封不动

  1. <UserControl x:Class="Demo0810.PrismUserControl1"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:prism="http://prismlibrary.com/"
  5. prism:ViewModelLocator.AutoWireViewModel="True">
  6. <Grid>
  7. <TextBlock Text="View A" FontSize="38" />
  8. </Grid>
  9. </UserControl>

或者MainWindow.xaml.cs不更改(保持极简纯粹),更改MainWindowViewModel.cs的代码:推荐

  1. using Prism.Mvvm;
  2. using Prism.Regions; //引入Regions
  3.  
  4. namespace Demo0810.ViewModels
  5. {
  6. public class MainWindowViewModel : BindableBase
  7. {
  8. private string _title = "Prism Application";
  9. public string Title
  10. {
  11. get { return _title; }
  12. set { SetProperty(ref _title, value); }
  13. }
  14. public MainWindowViewModel(RegionManager regionManager) //定义变量
  15. {
  16. //将PrismUserControl1用户控件加载到主窗体的ContenRegion控件中
  17. regionManager.RegisterViewWithRegion("ContentRegion", typeof(PrismUserControl1));
  18. ////或者
  19. //PrismUserControl1 viewA = new PrismUserControl1(); //new出一个类的对象
  20. //_regionManager.AddToRegion("ContentRegion", viewA);
  21. }
  22. }
  23. }

【实战2】仿照实战1新建项目Demo08101、添加用户控件PrismUserControl1.cs

主窗体界面前端代码MainWindow.xaml:

  1. <Window x:Class="Demo08101.Views.MainWindow"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:prism="http://prismlibrary.com/"
  5. prism:ViewModelLocator.AutoWireViewModel="True"
  6. Title="{Binding Title}" Height="350" Width="525">
  7. <DockPanel LastChildFill="True">
  8. <Button Command="{Binding ShowCommand}" DockPanel.Dock="Top" >Add View</Button>
  9. <ContentControl prism:RegionManager.RegionName="ContentRegion" />
  10. </DockPanel>
  11. </Window>

MainWindowViewModel.cs代码:其他文件原封不动

  1. using System;
  2. using Prism.Mvvm;
  3. using Prism.Commands;
  4. using Prism.Regions;
  5. using Demo08101.Views;
  6.  
  7. namespace Demo08101.ViewModels
  8. {
  9. public class MainWindowViewModel : BindableBase
  10. {
  11. private string _title = "Prism Application";
  12. public string Title //数据属性
  13. {
  14. get { return _title; }
  15. set { SetProperty(ref _title, value); }
  16. }
  17. public DelegateCommand ShowCommand { get; set; } //命令属性
  18.  
  19. IRegionManager _regionManager; //定义变量
  20. public void Show() //方法,展示用户控件到指定的主窗体控件中
  21. {
  22. _regionManager.RegisterViewWithRegion("ContentRegion", typeof(PrismUserControl1));
  23. ////或者
  24. //PrismUserControl1 viewA = new PrismUserControl1(); //new出一个类的对象
  25. //_regionManager.AddToRegion("ContentRegion", viewA);
  26. }
  27.  
  28. public MainWindowViewModel(IRegionManager regionManager)
  29. {
  30. _regionManager = regionManager; //赋值
  31. this.ShowCommand = new DelegateCommand(new Action(Show)); //命令属性关联方法
  32. }
  33. }
  34. }

Prism框架的Regions使用的更多相关文章

  1. Prism框架研究(一)

    从今天起开始写一个Prism框架的学习博客,今天是第一篇,所以从最基本的一些概念开始学习这个基于MVVM的框架的学习,首先看一下Prism代表什么,这里引用一下比较官方的英文解释来看一下:Prism ...

  2. Prism框架的Module(模块化)编程

    Prism框架用的是新版本的,Prism7.1.关于其中的变动,感兴趣的参考https://www.cnblogs.com/hicolin/p/8694892.html 如何告诉Shell(我们的宿主 ...

  3. Prism 框架解读之一系列

    名词解释 1.什么是IOC IOC是 Inversion of Control的缩写,多数书籍翻译成"控制反转". IOC 和依赖注入(DI) 所谓依赖注入,就是由IOC容器在运行 ...

  4. WPF Step By Step 系列-Prism框架在项目中使用

    WPF Step By Step 系列-Prism框架在项目中使用 回顾 上一篇,我们介绍了关于控件模板的用法,本节我们将继续说明WPF更加实用的内容,在大型的项目中如何使用Prism框架,并给予Pr ...

  5. WPF Prism框架下基于MVVM模式的命令、绑定、事件

    Prism框架下的自定义路由事件和命令绑定 BaseCode XAML代码: <Button x:Class="IM.UI.CommandEx.PrismCommandEx" ...

  6. 在Prism 框架中,实现主程序与模块间 UI 的通信

    背景: 在模块的UI中包含 TreeView 控件,在该树形控件的每一节点前面定义了一个复选框,如图 需求: 在两个不同的应用程序中使用该控件,而它在不同应用程序中的外观则并不一致,按照本例,即一个显 ...

  7. Prism框架中加载类库中时其中第三方类dll提示无法加载程序集

    Prism框架是采用一种依赖注入的方式动态加载程序集,能够在程序需要加载的时候将程序集注入到里面去,实现程序的热插拔效果,而且采用这种框架能够让我们进行一个大项目的独立开发,在最近的一个项目中在独立开 ...

  8. 项目中使用Prism框架

    Prism框架在项目中使用   回顾 上一篇,我们介绍了关于控件模板的用法,本节我们将继续说明WPF更加实用的内容,在大型的项目中如何使用Prism框架,并给予Prism框架来构建基础的应用框架,并且 ...

  9. Prism框架在项目中使用

    本文大纲 1.Prism框架下载和说明 2.Prism项目预览及简单介绍. 3.Prism框架如何在项目中使用. Prism框架下载和说明 Prism框架是针对WPF和Silverlight的MVVM ...

随机推荐

  1. python+pycharm+PyQt5 图形化界面安装教程

    python图形化界面安装教程 配置环境变量 主目录 pip所在目录,及script目录 更新pip(可选) python -m pip install --upgrade pip ps:更新出错一般 ...

  2. Spring系列七:Spring 自动装配

    相思相见知何日?此时此夜难为情. 概述 在Spring框架中,在配置文件中声明bean的依赖关系是一个很好的做法,因为Spring容器能够自动装配协作bean之间的关系.这称为spring自动装配. ...

  3. P1062 数列 题解

    (题目为啥要强调用十进制输出呢,明明就是故意提醒) 分析一下样例 k=3k=3时,数列为:1,3,4,9,10,12,13..1,3,4,9,10,12,13.. 转换成三进制就是:1,10,11,1 ...

  4. HDU1285(拓扑排序裸题

    ..被多组测试坑了一波 #include<iostream> #include<vector> #include<queue> using namespace st ...

  5. AC自动机练习2:修改串

    这道题的话用到了dp,一个比较简单的dp方程 1466: [AC自动机]修改串 poj3691 时间限制: 1 Sec  内存限制: 128 MB提交: 18  解决: 14[提交] [状态] [讨论 ...

  6. 发明专利定稿&递交申请啦,开心

    也不想写些什么,只是想简单的分享一下当前的心情! 第一版到最后一版中间因为各种事情耽误,一直弄到现在.5月中旬找的专利代理局中间连续修改很多次,从大改到小改,再到微调真的是学习到了! 下面就是搞定&l ...

  7. Python3简易接口自动化测试框架设计与实现(上)

    目录 1.开发环境 2.用到的模块 3.框架设计 3.1.流程 3.2.项目结构 5.日志打印 6.接口请求类封装 接口开发请参考:使用Django开发简单接口:文章增删改查 1.开发环境 操作系统: ...

  8. php 获取网址参数

    echo "rewrite: ".$_GET["rewrite"]; echo "<br>SERVER_PORT: ".$_SE ...

  9. fastadmin 页面添加编辑日期时间

    添加 <div class="form-group"> <label class="control-label col-xs-12 col-sm-2&q ...

  10. 【异常】hue:unknown database hue

    1 hue error日志报错,找不到hue数据库 2 解决办法 删除hue服务,重新添加,再次在添加database阶段验证密码,test通过,再继续. 还有造成这个事情的原因,是自己移动了mysq ...