当前位置: 首页 > news >正文

WPF使用ContentControl控件实现区域导航,并使用Prism依赖注入优化

背景:使用ContentControl控件实现区域导航是有Mvvm框架的WPF都能使用的,不限于Prism

主要是将ContenControl控件的Content内容在ViewModel中切换成不同的用户控件

下面是MainViewModel:

private object body;public object Body
{get { return body; }set { body = value; RaisePropertyChanged(); }
}public DelegateCommand<string> OpenCommand { get; set; }public MainWindowViewModel()
{OpenCommand = new DelegateCommand<string>(obj =>{Body = obj switch{"ViewA" => new ViewA(),"ViewB" => new ViewB(),"ViewC" => new ViewC(),_ => Body};});
}


上面是有Mvvm框架就行了,每次打开新的模块就创建一个用户控件对象

下面是使用Prism框架的导航实现会方便一些

1.首先在App.xaml.cs中注入用户控件的依赖

2.ContentControl中的Content修改为:

<ContentControl Grid.Row="1" prism:RegionManager.RegionName="ContentRegion" />

3.MainWindowViewModel变成:

public class MainWindowViewModel : BindableBase
{private readonly IRegionManager regionManager;public DelegateCommand<string> OpenCommand { get; set; }public MainWindowViewModel(IRegionManager regionManager){OpenCommand = new DelegateCommand<string>(obj => { regionManager.Regions["ContentRegion"].RequestNavigate(obj); });this.regionManager = regionManager;}
}

-- 也就是由创建用户控件,变成调用依赖注入的用户控件

http://www.lryc.cn/news/514564.html

相关文章:

  • JavaWeb——MySQL-DML(1/3)-添加数据insert(DML 操作概述、INSERT 语句插入数据、语句演示、总结)
  • 经验证:将数据从索尼传输到Android的 4 种方法
  • 嵌入式应用实例→电子产品量产工具→UI界面的绘制和测试
  • 如何删除 Docker 中的悬虚镜像?
  • el-table树形懒加载展开改为点击行展开
  • 【Ubuntu】Ubuntu server 18.04 搭建Slurm并行计算环境(包含NFS)
  • 高并发场景下的秒杀系统架构设计与实现
  • 搭建开源版Ceph分布式存储
  • QT----------多媒体
  • 选择器(结构伪类选择器,伪元素选择器),PxCook软件,盒子模型
  • Vue2/Vue3 响应式原理对比指南
  • FastExcel:超越EasyExcel的新一代Excel处理工具
  • 大模型系列17-RAGFlow搭建本地知识库
  • 常用的mac软件下载地址
  • 基于51单片机和16X16LED点阵屏(74HC138和74HC595驱动)的小游戏《贪吃蛇》
  • python中常用的内置函数介绍
  • 【微服务】Spring Cloud Config解决的问题和案例
  • 华为OD机试E卷 --最小的调整次数--24年OD统一考试(Java JS Python C C++)
  • Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(2):配置主数据库
  • 慧集通iPaaS集成平台低代码训练-实践篇
  • TDengine 如何进行高效数据建模
  • HarmonyOS NEXT应用开发实战:一分钟写一个网络接口,JsonFormat插件推荐
  • 基于动力学的MPC控制器设计盲点解析
  • Java重要面试名词整理(十六):SpringBoot
  • 在K8S中,如何部署kubesphere?
  • 算法-查找缺失的数字
  • antd-vue - - - - - a-date-picker限制选择范围
  • 计算机网络练习题
  • redis的集群模式与ELK基础
  • STM32-笔记18-呼吸灯