博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF:MVVM模式下ViewModel关闭View
阅读量:6820 次
发布时间:2019-06-26

本文共 1231 字,大约阅读时间需要 4 分钟。

不外乎两种基本方法。

消息通知和参数传递。

一、消息通知

利用View里的IsEnable属性

原理是这样的:

1、UI中的IsEnabled绑定VM中的属性

2、UI的后台代码中,注册IsEnableChange事件,在这个事件里,检测到传过来的值满足某个条件,即可触发Close()命令

如此,VM控制自己那个属性就能达到关闭V的目的了。

二、参数传递。

根据参数传递的不同。分为传递函数和传递View对象。

1传递函数

该方法:需要三步。

 

1、重写ViewModel的构造函数

public ProduceCloud_ViewModel(Action close)        {            this.close = close;                   }

 

 

2、View在新建ViewModel对象时,将View对象的Close方法传递给ViewModel。

public ProduceDsm_View()        {            InitializeComponent();                        produceCloudViewModel = new ProduceCloud_ViewModel(this.Close);            this.DataContext = produceCloudViewModel;        }

 

3 当执行完某个操作需要关闭View时,调用该函数委托即可。

private void Act_OnClick(object obj)        {         //其他操作            this.close.Invoke();        }

2传递View对象

这个就简单了。

1重写ViewModel的构造函数

class MyViewModel    {        ///         /// 添加Window属性 ///  private Window window { get; set; } ///  /// 构造函数,接收window作为参数 ///  public MyViewModel(object window) { this.window = (Window)window; } }

 

 

3新建ViewModel实例的时候,传入View对象。

public MainWindow()        {            InitializeComponent();            this.DataContext = new MyViewModel(this);        }

 

 

3需要的时候,就调用window的Close方法。

this.window.Close();

 

转载于:https://www.cnblogs.com/xinyf/p/6294863.html

你可能感兴趣的文章
在ASP.NET MVC 4中使用Kendo UI Grid
查看>>
SpringCloud_概述与入门
查看>>
vim精简版教程
查看>>
js判断DOM是否包含另一个DOM
查看>>
干货 | 用python3+dlib教你的程序察言观色
查看>>
Kafka的Consumer负载均衡算法
查看>>
换个姿势学数学:二次函数与拆弹部队
查看>>
React-事件机制杂记
查看>>
[LeetCode] Unique Word Abbreviation 独特的单词缩写
查看>>
[20171105]exp imp buffer参数解析.txt
查看>>
JEESZ分布式框架--单点登录集成方案
查看>>
连载31:软件体系设计新方向:数学抽象、设计模式、系统架构与方案设计(简化版)(袁晓河著)...
查看>>
22-高级路由:OSPF 路由认证:明文、密文
查看>>
APP推广如何实现邀请追踪?
查看>>
元旦晚会年终总结汇报PPT模板
查看>>
Linux环境下运行Java项目的sh脚步
查看>>
Couldn't register xxx with the bootstrap server.
查看>>
作为管理者,如何理解数据与业务?
查看>>
precreatewindow里面做了什么
查看>>
大数据开发第一步:Hadoop基础学习
查看>>