Prism导航入门学习笔记

news/2024/10/16 16:07:25 标签: 学习, 笔记

首先创建一个空的Prism项目

在View文件夹中创建一个UserControl的A界面,再在ViewModel中创建一个AViewModel的类

在主页面中创建Button按钮,使用Command属性,指向导航命令的方法,CommandParameter指向导航的页面

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"></ColumnDefinition>
        <ColumnDefinition Width="*"></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <StackPanel Orientation="Horizontal">
        <Button Height="30" Width="20" Margin="10" Command="{Binding NavigationComand}" CommandParameter="A">A</Button>
        <Button Height="30" Width="20" Margin="10" Command="{Binding NavigationComand}" CommandParameter="B">B</Button>
        <Button Height="30" Width="20" Margin="10" Command="{Binding NavigationComand}" CommandParameter="C">C</Button>
        <Button Height="30" Width="20" Margin="10" Command="{Binding NavigationComand}" CommandParameter="D">D</Button>
        <Button Height="30" Width="20" Margin="10" Command="{Binding NavigationComand}" CommandParameter="E">E</Button>
        <Button Height="30" Width="20" Margin="10" Command="{Binding NavigationParaCommand}" CommandParameter="F">F</Button>
    </StackPanel>
    
    <ContentControl Grid.Column="1" prism:RegionManager.RegionName="ContentRegion" />
</Grid>

想要使用导航,首先需要在APP.xaml.cs中注册好导航

protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
    containerRegistry.RegisterForNavigation<A,AViewModel>();
    containerRegistry.RegisterForNavigation<B,BViewModel>();
    containerRegistry.RegisterForNavigation<C,CViewModel>();
    containerRegistry.RegisterForNavigation<D,DViewModel>();
    containerRegistry.RegisterForNavigation<E,EViewModel>();
    containerRegistry.RegisterForNavigation<F,FViewModel>();
}

注册视图与视图模型的导航关系,程序可以通过导航框架在不同的视图中进行切换和导航

在MainqWindowViewModel类中创建一个导航命令成员属性,赋予get,set方法

//创建一个导航命令,需要传递一个页面名称
public DelegateCommand<string> NavigationComand { get; set; }

类中创建导航的方法

**导航的方法
* viewName需要导航到那个页面的名称
*/

public void Navigation(string viewName) {
    _regionManager.RequestNavigate("ContentRegion", viewName);
}


//私有化IRegionManager对象
private IRegionManager _regionManager;

在主页面有参构造方法中,将导航的方法传递给导航命令

public MainWindowViewModel(IRegionManager regionManager)
{
    _regionManager = regionManager;
    NavigationComand = new(Navigation);
}

运行程序后,在对应的region区域中显示相应页面的内容


http://www.niftyadmin.cn/n/5708188.html

相关文章

Go语言基础学习(Go安装配置、基础语法)

一、简介及安装教程 1、为什么学习Go&#xff1f; 简单好记的关键词和语法&#xff1b;更高的效率&#xff1b;生态强大&#xff1b;语法检查严格&#xff0c;安全性高&#xff1b;严格的依赖管理&#xff0c; go mod 命令&#xff1b;强大的编译检查、严格的编码规范和完整的…

C++学习路线(十六)

void类型指针 void -> 空类型 void* -> 空类型指针&#xff0c;只存储地址的值&#xff0c;丢失类型&#xff0c;无法访问&#xff0c;要访问里面的值 我们必须对指针进行正确的类型转换&#xff0c;然后再间接引用指针 所有其它类型的指针都可以隐式自动转换成 void 类型…

高级算法设计与分析 学习笔记13 线性规划

注意是线性规划不是动态规划哦 好家伙&#xff0c;这不是凸优化吗&#xff1f; 凸优化标准形式&#xff1a; 先改成统一最大化&#xff08;凸优化那边怎么是统一最小化&#xff1f;&#xff09; 原来的x2正负无所谓&#xff0c;但我希望每个x都是有限制的&#xff0c;所以把它改…

【整合包及教程】第二代GPT-SoVITS V2:革新声音克隆技术

随着人工智能技术的飞速发展&#xff0c;语音克隆技术也在不断进化。近期推出的第二代GPT-SoVITS V2&#xff0c;以其强大的功能和易用性&#xff0c;成为该领域的一大突破。GPT-SoVITS V2不仅能够基于少量的语音样本&#xff08;例如1分钟的音频&#xff09;来克隆音色&#x…

深入解析 Go 语言接口:多接口实现与接口组合的实际应用

文章目录 一、引言二、一个类型实现多个接口1. 定义多个接口2. 类型实现多个接口3. 使用多个接口 三、接口的组合1. 接口嵌套2. 实现复合接口 四、实际开发中的应用场景1. 多态与模块化设计2. 松耦合系统设计3. 测试与依赖注入4. 事件驱动架构中的应用 五、小结 一、引言 在 G…

【修订中】ffmpeg 知识点

一、两种安装方式 static FFmpeg binaries for macOS 64-bit Intel brew install ffmpeg 时间有点长 需要挂上代理 二、ffmpeg 使用这个工具去除水印以后原来水印的那个点就模糊了如何解决这个问题呢 使用 FFmpeg 的delogo过滤器去除水印时&#xff0c;通常会导致水印所…

【玩转 JS 函数式编程_014】4.1 JavaScript 纯函数的相关概念(下):纯函数的优势

文章目录 4.1 纯函数4.1.1. 引用透明 Referential transparency4.1.2. JS 函数中的副作用 Side effects4.1.3. 纯函数的优势 Advantages of pure functions ✔️1 执行顺序 Order of execution2 函数记忆 Memoization3 自带文档描述 Self-documentation4 利于测试 Testing (接上…

不用搭建服务?MemFire Cloud让开发更简单

不用搭建服务&#xff1f;MemFire Cloud让开发更简单 在当今的开发世界里&#xff0c;想要开发一个功能齐全的应用&#xff0c;往往意味着需要搭建复杂的后端、开发API接口、处理认证授权、管理数据库……这些琐碎的工作让很多开发者头疼不已&#xff0c;尤其是独立开发者或者…