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

本文共 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://rittx.baihongyu.com/

你可能感兴趣的文章
Rand工具类
查看>>
iOS边练边学--cocoaPods管理第三方框架--命令行方式实现
查看>>
线程学习笔记(一)
查看>>
黄聪:bootstrap的模态框modal插件在苹果iOS Safari下光标偏离问题解决方案
查看>>
黄聪:在Windows下搭建***服务器
查看>>
git常用命令
查看>>
[Android学习笔记]EditText的使用
查看>>
《活出生命的意义》读后感
查看>>
第四次作业
查看>>
第二次软件综合实验专题作业——结对编程 1759103 李思佳 、 1759107 陶彦婷
查看>>
TCP协议三次握手过程分析
查看>>
std::lexicographical_compare
查看>>
Java设计模式:代理模式(一)
查看>>
直线栅格化(基于 Bresenham 算法)
查看>>
python IDLE 如何实现清屏
查看>>
三维系统应用实例——截图
查看>>
MVC4 + EF为Model添加单独的验证属性
查看>>
C# Dictionary 的几种遍历方法
查看>>
jsvascript === 和==的区别
查看>>
解决Ubuntu(乌班图)vi/vim模式下粘贴的代码内容会多出的空格的问题
查看>>