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

【实战1】

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

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

MainWindow.xaml.cs代码:

using System.Windows;
using Prism.Regions; //引入Regions namespace Demo0810.Views
{
public partial class MainWindow : Window
{
public MainWindow(IRegionManager regionManager) //定义变量
{
InitializeComponent();
//将PrismUserControl1用户控件加载到主窗体的ContenRegion控件中
regionManager.RegisterViewWithRegion("ContentRegion", typeof(PrismUserControl1));
////或者
//PrismUserControl1 viewA = new PrismUserControl1(); //new出一个类的对象
//_regionManager.AddToRegion("ContentRegion", viewA);
}
}
}

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

<UserControl x:Class="Demo0810.PrismUserControl1"
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>
<TextBlock Text="View A" FontSize="38" />
</Grid>
</UserControl>

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

using Prism.Mvvm;
using Prism.Regions; //引入Regions namespace Demo0810.ViewModels
{
public class MainWindowViewModel : BindableBase
{
private string _title = "Prism Application";
public string Title
{
get { return _title; }
set { SetProperty(ref _title, value); }
}
public MainWindowViewModel(RegionManager regionManager) //定义变量
{
//将PrismUserControl1用户控件加载到主窗体的ContenRegion控件中
regionManager.RegisterViewWithRegion("ContentRegion", typeof(PrismUserControl1));
////或者
//PrismUserControl1 viewA = new PrismUserControl1(); //new出一个类的对象
//_regionManager.AddToRegion("ContentRegion", viewA);
}
}
}

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

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

<Window x:Class="Demo08101.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">
<DockPanel LastChildFill="True">
<Button Command="{Binding ShowCommand}" DockPanel.Dock="Top" >Add View</Button>
<ContentControl prism:RegionManager.RegionName="ContentRegion" />
</DockPanel>
</Window>

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

using System;
using Prism.Mvvm;
using Prism.Commands;
using Prism.Regions;
using Demo08101.Views; namespace Demo08101.ViewModels
{
public class MainWindowViewModel : BindableBase
{
private string _title = "Prism Application";
public string Title //数据属性
{
get { return _title; }
set { SetProperty(ref _title, value); }
}
public DelegateCommand ShowCommand { get; set; } //命令属性 IRegionManager _regionManager; //定义变量
public void Show() //方法,展示用户控件到指定的主窗体控件中
{
_regionManager.RegisterViewWithRegion("ContentRegion", typeof(PrismUserControl1));
////或者
//PrismUserControl1 viewA = new PrismUserControl1(); //new出一个类的对象
//_regionManager.AddToRegion("ContentRegion", viewA);
} public MainWindowViewModel(IRegionManager regionManager)
{
_regionManager = regionManager; //赋值
this.ShowCommand = new DelegateCommand(new Action(Show)); //命令属性关联方法
}
}
}

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. Clone()方法详解

    一.克隆的原理与应用 clone在堆上分配内存,分配的内存和源对象(即调用clone方法的对象)相同,然后再使用原对象中对应的各个域,填充新对象的域, 填充完成之后,clone方法返回,一个新的相同的 ...

  2. linux系统设置允许密码登录

    编辑  /etc/ssh/sshd_config 文件 将PasswordAuthentication 的值改为 yes 然后重启ssh 服务 进入到  /etc/init.d 文件夹内 执行 ./s ...

  3. 树莓派3b 串口乱码的一个解决思路

    首先确认波特率设置正确,为115200 向microSD卡中烧录树莓派官方的镜像后,先不要急着把它插入树莓派中. 在电脑上打开microSD卡,按如下方式修改config.txt和cmdline.tx ...

  4. 经验:什么影响了数据库查询速度、什么影响了MySQL性能 (转)

    一.什么影响了数据库查询速度 1.1 影响数据库查询速度的四个因素 1.2 风险分析 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定 ...

  5. day05-06

    day05 上传下载 下载工具软件: lrzsz 安装方法: yum install lrzsz -y 下载命令就是sz 上传命令就是rz 下载到widow实列 sz 文件名 上传到linux 执行r ...

  6. paramiko-ssh-sftp实例

    import paramiko transport = paramiko.Transport(('192.168.71.136', 22)) transport.connect(username='r ...

  7. Vanya and Scales CodeForces - 552C (思维)

    大意: $101$个砝码, 重$w^0,w^1,...,w^{100}$, 求能否称出重量$m$. w<=3时显然可以称出所有重量, 否则可以暴力双端搜索. #include <iostr ...

  8. Java 面向对象的设计原则

    一. 1.面向对象思想的核心: 封装.继承.多态.   2.面向对象编程的追求: 高内聚低耦合的解决方案: 代码的模块化设计: 3.什么是设计模式: 针对反复出现的问题的经典解决方案,是对特定条件下( ...

  9. 高性能MySQL3_笔记0

    该书2015年5月出版的,实际上已经有些老了,但是经典的东西还是经典. 该书一共16章 1.Mysql的架构与历史 2.Mysql基准测试 3.服务器性能剖析 4.Schema与数据类型优化 5.创建 ...

  10. Guava -- 集合类 和 Guava Cache

    Guava -- 集合类 和 Guava Caches 1. 什么是 Guava Guava 是 google 推出的一个第三方 java 库,用来代替 jdk 的一些公共操作,给我印象特别深的就是 ...