MVVM模式下窗口关闭

MVVM模式下窗口关闭  

       MVVM模式下,WPF的数据绑定与Presentation Model相结合是很好的做法,使得开发人员可以将View和逻辑分离出来,但随之而来的问题也出现了,对于窗体的操作,在不用数据绑定的时候,可以使用IVIew来直接操作界面,采用MVVM模式后,数据会与VM的数据绑定在一起,如进行窗口关闭的操作时,应该执行的位置在VM里面,而不是简单的在View里面执行,一个简单的解决方法就是,将view的窗体,直接传递给VM的构造方法,然后就可以在VM里面执行窗口关闭了。   
      1、在View中将cs文件下,将窗口传递给VM:

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

     2、在VM中,设置一个Window属性,利用构造函数接收View传递过来的窗口,此时即可进行窗口关闭操作:

class MyViewModel { /// <summary>
/// 添加Window属性
/// </summary> private Window window { get; set; } /// <summary> /// 关闭窗口 /// </summary> public void WindowClose() { this.window.Close(); }

/// <summary> /// 构造函数,接收window作为参数 /// </summary> public MyViewModel(object window) { this.window = (Window)window; this.WindowClose(); } }

       这是解决MVVM下窗口关闭的一个简单方案,但这样做的话,实际是将窗口传递进VM中,这是跟MVVM的设计模式相违背,因为MVVM就是为了解耦,这样做其实跟直接在VIew中关闭区别不大,要真正进行MVVM的设计,还需要进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值