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

Prism--对话服务

实现这样一个效果,点击打开对话框,出现对话框,并且传去参数。之后会返回一些信息。

WPF也可以实现,只不过需要自己去定义事件 委托等等。Prism框架有现成的。

 

实现对话框:

1、在模块A视图中定义一个用户控件ViewC,用于写对话框样式。


    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"></RowDefinition>
            <RowDefinition></RowDefinition>
            <RowDefinition Height="auto"></RowDefinition>
        </Grid.RowDefinitions>
        <TextBlock Text="温馨提示"></TextBlock>
        <TextBlock Grid.Row="1" Text="大家好" FontSize="30"></TextBlock>
        <StackPanel Grid.Row="2" Orientation="Horizontal">
            <Button Content="确定" ></Button>
            <Button Content="取消" ></Button>
        </StackPanel>
    </Grid>

2、在主窗口视图模型中,定义一个对话框服务

//定义一个对话框服务
private readonly IDialogService DialogService;

构造函数中实例化

 public MainWindowViewModel(IRegionManager _RegionManager,IDialogService _DialogService)
 {
     ShowContentCmm = new DelegateCommand<string>(ShowContentFunc);
     BackCmm = new DelegateCommand(Back);
     RegionManager = _RegionManager;
     DialogService = _DialogService;
 }

定义一个打开对话框的方法

   /// <summary>
   /// 打开对话框
   /// </summary>
  
   private void ShowDialogFunc(string ViewName)
   {        
       DialogService.ShowDialog(ViewName);
   }

定义一个用于绑定的命令,构造函数中实例化命令。

 public DelegateCommand<string> ShowDialogCmm { get; set; }
 
 ShowDialogCmm = new DelegateCommand<string>(ShowDialogFunc);

设置按钮,绑定命令

 <Button Content="打开对话框" Width="80" Height="30"  Command="{Binding ShowDialogCmm}" CommandParameter="ViewC"></Button>

注入对话框服务

 ModuleAProfile 中

  //注入对话框
            containerRegistry.RegisterDialog<ViewC>();


     

在模块A中新建视图C的视图模型,继承IDialogAware,并且实现接口

在主窗口视图模型中,实现打开对话框传参功能


        /// <summary>
        /// 打开对话框
        /// </summary>
        /// <param name="ucName">用户控件名称</param>
        private void ShowDialogFunc(string ucName)
        {
            DialogParameters paras = new DialogParameters();
            paras.Add("Title", "动态传递的标题");
            paras.Add("para1", "业务参数值1");
            paras.Add("para2", "业务参数值2");

            DialogService.ShowDialog(ucName);
        }

在模块A中新建视图C的视图模型,接收参数


        /// <summary>
        /// 打开对话框
        /// </summary>
        /// <param name="ucName">用户控件名称</param>
        private void ShowDialogFunc(string ucName)
        {
            DialogParameters paras = new DialogParameters();
            paras.Add("Title", "动态传递的标题");
            paras.Add("para1", "业务参数值1");
            paras.Add("para2", "业务参数值2");

            DialogService.ShowDialog(ucName);
        }


        


http://www.kler.cn/a/521482.html

相关文章:

  • 【AI】Deepseek本地部署探索,尝试联网搜索
  • 01. 计算机系统
  • 机器学习2 (笔记)(朴素贝叶斯,集成学习,KNN和matlab运用)
  • SpringCloud系列教程:微服务的未来(十八)雪崩问题、服务保护方案、Sentinel快速入门
  • 商密测评题库详解:商用密码应用安全性评估从业人员考核题库详细解析(9)
  • [JavaWeb]搜索表单区域
  • 如何使用DDD 的思想规划对应的模块
  • arcgis短整型变为长整型的处理方式
  • window保存好看的桌面壁纸
  • 一文讲解JVM中的G1垃圾收集器
  • 什么是vue.js组件开发,我们需要做哪些准备工作?
  • 洛谷题目: P2188 小Z的 k 紧凑数 (本题较难,省选-难度)题解
  • 深度学习:基于MindNLP的RAG应用开发
  • Python Typing: 实战应用指南
  • 安装Office自定义项,安装期间出错
  • 力扣算法题——11.盛最多水的容器
  • Synology 群辉NAS安装(5)介绍一下NAS的体系和安装container manager
  • 第三节 MATLAB基本语法
  • SuperMap GIS基础产品FAQ集锦(20250127)
  • 美国公司有意收购TikTok(抖音)
  • Linux——冯 • 诺依曼体系结构
  • 834 数据结构(自用)
  • 26.日常算法
  • Mybatis——sql映射文件中的增删查改
  • Maven运行任何命令都报错“Internal error: java.lang.ArrayIndexOutOfBoundsException”
  • 作业四:简述mysql 主从复制原理及其工作过程,配置一主两从并验证。