Prism入门之区域(Region)管理
2021/8/16 23:06:50
本文主要是介绍Prism入门之区域(Region)管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、区域管理器
首先看一下官方给的模型图
现在我们可以知道的是,大致一个区域管理器RegionMannager对一个控件创建区域的要点:
- 创建Region的控件必须包含一个RegionAdapter适配器
- region是依赖在具有RegionAdapter控件身上的
其实后来我去看了下官方的介绍和源码,默认RegionAdapter是有三个,且还支持自定义RegionAdapter,因此在官方的模型图之间我做了点补充:
二、区域创建与视图的注入
1、创建前端页面,放置3个按钮用于向区域中注入不同的视图
<Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="150" /> <ColumnDefinition /> </Grid.ColumnDefinitions> <StackPanel> <Button Margin="5" Command="{Binding OpenCommand}" CommandParameter="ViewA" Content="模块A" /> <Button Margin="5" Command="{Binding OpenCommand}" CommandParameter="ViewB" Content="模块B" /> <Button Margin="5" Command="{Binding OpenCommand}" CommandParameter="ViewC" Content="模块C" /> </StackPanel> <ContentControl Grid.Column="1" prism:RegionManager.RegionName="ModuleContent" /> </Grid>
通过Prism框架的区域管理器RegionManager的RegionName注册一个区域,方便后续向里面填充视图页面等。
2、再创建几个用户控件,这里要注意一下,只能是只能具有Window或Frame父级才可以。
<UserControl x:Class="BlankCoreApp1.Views.ViewA" 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:local="clr-namespace:BlankCoreApp1.Views" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" d:DesignHeight="450" d:DesignWidth="800" mc:Ignorable="d"> <Grid Background="Red"> <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="60" Foreground="White" Text="我是模块A" /> </Grid> </UserControl>
另外两个一样的省略代码...
3、接着则定义一个Command以及Command最终执行的方法,并绑定到前端的按钮中
//CS: public DelegateCommand<string> OpenCommand { get; private set; } //XAML: <Button Margin="5" Command="{Binding OpenCommand}" CommandParameter="ViewA" Content="模块A" />
另外,如果我们想使用区域管理器向其ContentControl注入视图则还需在VM的构造函数中获取区域管理器
public MainWindowViewModel(IRegionManager regionManager) { _regionManage = regionManager; OpenCommand = new DelegateCommand<string>(OpenMethod); }
在Command的执行方法中使用区域管理器查找全局已定义的可用区域,通过注册的区域名称找到区域动态的去设置内容
private void OpenMethod(string obj) { _regionManage.Regions["ModuleContent"].RequestNavigate(obj); }
4、还有一个重要的点,需要在App.cs中通过重写RegisterTypes方法注册区域视图
protected override void RegisterTypes(IContainerRegistry containerRegistry) { containerRegistry.RegisterForNavigation<ViewA>(); containerRegistry.RegisterForNavigation<ViewB>(); containerRegistry.RegisterForNavigation<ViewC>(); }
最终运行效果:
这篇关于Prism入门之区域(Region)管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27消息中间件底层原理资料详解
- 2024-11-27RocketMQ底层原理资料详解:新手入门教程
- 2024-11-27MQ底层原理资料详解:新手入门教程
- 2024-11-27MQ项目开发资料入门教程
- 2024-11-27RocketMQ源码资料详解:新手入门教程
- 2024-11-27本地多文件上传简易教程
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器