01

前言

在winform中打开一个新的子窗体很简单,直接实例化窗体并show一下就可以:

Form2 f2 = new Form2();f2.Show();

或者

Form2 f2 = new Form2();f2.ShowDialog();

但是,在wpf的mvvm模式下,这种方法是行不通的,因为逻辑是在viedmodel中写的,CM框架下viewmodel和view是通过正则自动匹配的。所以正常是通过调用框架下得WindowManager接口,在window后台代码中通过WindowManager注册需要弹出的窗体类型,在ViewModel通过WindowManager的Show或ShowDialog方法,显示出来。

02

ShowDialog用法实现

首先实例化新的子窗体SubShowWindowViewModel ,然后通过CM框架的ioc容器获取IWindowManager接口,通过接口的ShowDialog调出子窗体,ControlTestStr 用来显示子窗体的赋值并在界面显示。

using Caliburn.Micro;
using PropertyChanged;namespace CaliburnTest
{[AddINotifyPropertyChangedInterface]public class ControlTestViewModel{public string ControlTestStr { get; set; } = string.Empty;public void  NewWindowShow(){ControlTestStr = "NewWindowShow";SubShowWindowViewModel subShowWindowViewModel = new SubShowWindowViewModel(ControlTestStr);IWindowManager windowManager = IoC.Get<IWindowManager>();windowManager.ShowDialog(subShowWindowViewModel);ControlTestStr = subShowWindowViewModel.SubShowWindowStr;}}
}

03

结果演示

ControlTestStr 获取到了新窗体的赋值并显示到了界面.

C# WPF MVVM模式下在主窗体显示子窗体并获取结果相关推荐

  1. wpf mvvm模式下CommandParameter传递多参

    wpf mvvm模式下CommandParameter传递多参 原文:wpf mvvm模式下CommandParameter传递多参 CommandParameter一般只允许设置一次,所以如果要传递 ...

  2. WPF MVVM模式下的无阻塞刷新

    MVVM模式下的无阻塞刷新的两种方法: //传统模式下的无刷新调用(主线程开新线程,新线程又调用主线程来更新UI) //第1步先在线程内部计算出需要绑定的数据 //第2步然后再使用Invoke/Beg ...

  3. C# WPF MVVM模式Prism框架下事件发布与订阅

    01 - 前言 处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Prism提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间通过事 ...

  4. C# WPF MVVM模式Caliburn.Micro框架下事件发布与订阅

    01 - 前言 处理同模块不同窗体之间的通信和不同模块之间不同窗体的通信,Caliburn提供了一种事件机制,可以在应用程序中低耦合的模块之间进行通信,该机制基于事件聚合器服务,允许发布者和订阅者之间 ...

  5. C# WPF MVVM模式Prism框架从零搭建(经典)

    01 - 前言 目前最新的PRISM的版本是8.1.97,本节以6.3.0.0 讲解,可以在Github上获取PRISM的源码. Prism Github地址:https://github.com/P ...

  6. WPF随笔(十四)--如何在MVVM模式下关闭窗口

    离上一篇WPF随笔有多久,再度编码WPF项目就有多久.机缘巧合又接下了一个开发WPF桌面程序的任务,又有机会详细研究之前一直忽略的细节. 今天就来谈谈如何在MVVM模式下关闭窗口. 什么?关闭窗口还要 ...

  7. WPF自学入门(十一)WPF MVVM模式Command命令 WPF自学入门(十)WPF MVVM简单介绍...

    WPF自学入门(十一)WPF MVVM模式Command命令 在WPF自学入门(十)WPF MVVM简单介绍中的示例似乎运行起来没有什么问题,也可以进行更新.但是这并不是我们使用MVVM的正确方式.正 ...

  8. 使用WPF+MVVM模式的小案例

    WPF+MVVM模式的小案例案例主要的目录结构 下面一步一步建立整个小程序的目录和相应的代码程序. 1.打开VS, 新建项目WPFDemo.Client.CustType(自己可以写自己的程序名称,这 ...

  9. MVVM模式下 DataTemplate 中控件的绑定

    今天给ListBox中通过DataTemplate生成的Button绑定命令时,一开始Button始终找不到绑定的命令.现找到了正确的绑定方式,特来记录一下. 先上个正确的示例: <ListBo ...

最新文章

  1. 最先进的图像分类算法:FixEfficientNet-L2
  2. uva 1610 聚会游戏
  3. (转)[翻译] ASP.NET MVC Tip #1 - 使用扩展方法创建新的HTML Helper
  4. Kubernetes 弹性伸缩全场景解读(五) - 定时伸缩组件发布与开源
  5. 小米手机安装https证书报错:无法安装该证书 因为无法读取该证书文件
  6. 检索数据_11_限制返回的行数
  7. Magicodes.IE编写多框架版本支持和执行单元测试
  8. php设计是什么意思,php – 什么是更好的设计?
  9. Android二维码之创建
  10. [转载] python之路《第二篇》Python基本数据类型
  11. Java程序员校招蚂蚁金服,大专生出身,做Java程序员真的没有春天吗
  12. Eclipse及Android环境配置
  13. Lodop打印控件介绍
  14. 网络货运平台申请后的优劣势分析
  15. 计算机科学之父——图灵
  16. ipad和iPhone尺寸和分辨率,点
  17. 努比亚Z11系统服务器选择,良心!努比亚Z11系列机型系统升级新版本后性能提升明显...
  18. 美国工程师发明6冲程节能发动机
  19. house of apple2(改进)
  20. [UNR #5]获奖名单

热门文章

  1. (10) 需求征集 -- 权限管理
  2. ExtJs学习笔记(21)-使用XTemplate结合WCF显示数据
  3. 关于vue执行打包后,如何在本地浏览问题
  4. visual studio开启多核编译方法
  5. 使用ASP.NET广告控件的XML语言创建广告链接--ASP.NET
  6. 第五周软件工程作业-每周例行报告
  7. html常用标签(form标签)
  8. 孤掌难鸣-------堵水眼
  9. VIM之Project 项目管理工具
  10. 如何衡量两个词的相关度