博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVVM模式下关闭窗口的实现
阅读量:6260 次
发布时间:2019-06-22

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

原文:

通过行为来实现

实现界面与逻辑的分离

窗口关闭行为:其中含有布尔型的Close属性,将相应的关闭行为绑定到该属性上,则可以实现窗口的关闭行为,从而实现VM与View的分离

public class WindowCloseBehaviour : Behavior
{ public static readonly DependencyProperty CloseProperty = DependencyProperty.Register( "Close", typeof(bool), typeof(WindowCloseBehaviour), new FrameworkPropertyMetadata( false, OnCloseChanged)); public bool Close { get { return (bool)GetValue(CloseProperty); } set { SetValue(CloseProperty, value); } } private static void OnCloseChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var window = ((WindowCloseBehaviour)d).AssociatedObject; var newValue = ((bool)e.NewValue); if (newValue) { window.Close(); } }

 

View:

xmlns:event="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"

而behaviors则是声明的WindowCloseBehaviour的命名空间

 

ViewModel:

private bool _isWinClose;        ///         /// 指示窗口是否关闭        ///         public bool IsWinClose        {            get { return _isWinClose; }            set            {                _isWinClose = value;                OnPropertyChanged("IsWinClose");                //窗口关闭则重置窗口状态                if (IsWinClose)                {                    ResetWindowCloseState();                }            }        }        //重置窗口状态        private void ResetWindowCloseState()        {            IsWinClose = false;        }

 

在业务逻辑中只需要指定isWinClose = true那么就能够关闭窗口了;

 

当然实现的方式有很多种,用附加属性也是能够实现的;这里使用行为的话是为了指定类型从而避免附加属性的类型判断

 

转载地址:http://plqsa.baihongyu.com/

你可能感兴趣的文章
Python之使用Pandas库实现MySQL数据库的读写
查看>>
基于scikit-learn机器学习库的分类预测
查看>>
svg与视频结合的镂空效果实践总结
查看>>
Scikit中的特征选择,XGboost进行回归预测,模型优化的实战
查看>>
Sklearn入门介绍
查看>>
Android广告图片轮播,支持无限循环和设置轮播样式、切换时间等
查看>>
screenX/Y,clientX/Y,offsetX/Y和pageX/Y之间有什么区别?
查看>>
webpack4.0优化那些事儿
查看>>
数据结构与算法(位运算) --javascript语言描述
查看>>
数据结构与算法(回溯法) --javascript语言描述
查看>>
百度地图开发实例番外篇--实用方法(持续更新)
查看>>
“大数据应用场景”之隔壁老王(连载一)
查看>>
k均值聚类算法(k-means)
查看>>
修改springboot的端口来启动项目
查看>>
MaxCompute SQL原理解析及性能调优
查看>>
vue中慎用style的scoped属性
查看>>
深度学习在股票市场的应用
查看>>
redis源码分析之事务Transaction(下)
查看>>
【273天】我爱刷题系列(32)
查看>>
Hystrix基础入门和特性讲解
查看>>