博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF中通过MVVM模式来关闭View
阅读量:5218 次
发布时间:2019-06-14

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

一,场景

    通过单击按钮执行ViewModel中的Command来关闭窗体,项目引用Prism4架构及使用MVVM进行UI层的开发。

二, 实现代码(方式应该有很多种,现介绍两种我所想过的方式)

     (1).通过发布订阅事件来关闭窗体

     1.CodeBahind中的代码

1   public partial class ApproveLoginView : Window 2  3     {         4  5           [ImportingConstructor]          6  7           public ApproveLoginView()       8  9          {          10 11                   InitializeComponent();           12 13                   ServicesHelper.EventAggregator.GetEvent
().Subscribe(CloseView); 14 15 }16 17 private void CloseView(object o) 18 19 { 20 21 if(o == DataContext) 22 23 Close(); 24 25 } 26 27 }
View Code

     2.ViewModel部分代码

1 public class ApproveLoginViewModel : NotificationObject,  2     { 3         4         private IEventAggregator _eventAggregator; 5  6         [ImportingConstructor] 7         public ApproveLoginViewModel(IEventAggregator eventAggregator) 8         { 9             _eventAggregator = eventAggregator;10         }11 12         #region Command13 14         private ICommand _okCommand;15         public ICommand OkCommand16         {17             get18             {19                 if (_okCommand == null)20                 {21                     _okCommand = new RelayCommand(Ok);22                 }23                 return _okCommand;24             }25             private set { }26         }27 28        29         private void Ok()30         {31             _eventAggregator.GetEvent
().Publish(this);32 }33 34 35 #endregion36 }
View Code

     (2).通过Prism的interactionRequest来实现

       1.Window中的Xaml部分代码

1 
8
9
10
11
12
13
14
15
16
View Code

       2.ViewModel中的部分代码

 

1  public class MainWindowViewModel : NotificationObject 2     { 3         public MainWindowViewModel() 4         { 5             this.CloseCommand = new DelegateCommand(new Action(Close)); 6             this.CloseRequest = new InteractionRequest
(); 7 } 8 9 public DelegateCommand CloseCommand { get; set; }10 11 private void Close()12 {13 this.CloseRequest.Raise(new Notification() );14 }15 16 public InteractionRequest
CloseRequest { get; set; }17 }
View Code

好了,就说到这了,因为自己在通过ViewModel来关闭view碰到些问题,上网找了些资料后找到这些解决方法的,希望对有需要的朋友能有帮助。

 

 

 

转载于:https://www.cnblogs.com/JustYong/archive/2013/05/30/3108406.html

你可能感兴趣的文章
Github Pages 建立过程记录
查看>>
leetcode-127-单词接龙
查看>>
[转]粒子滤波的Matlab仿真算法实现
查看>>
第8章 处理ISDN故障
查看>>
HDU 2112 HDU Today(Dijkstra)
查看>>
android怎么在launcher改动内置apk的icon
查看>>
cocos2dx 利用CCOrbitCamera实现扑克牌翻牌效果
查看>>
开发RESTful WebService
查看>>
【剑指offer】的功率值
查看>>
EJB究竟是什么,真的那么神奇吗??
查看>>
java实现各种数据统计图(柱形图,饼图,折线图)
查看>>
大文件不断行切割
查看>>
Performance Tuning guide 翻译 || 前言
查看>>
python-格式化输出
查看>>
Android简易实战教程--第四话《最简单的短信发送器》
查看>>
Workflow相关表简单分析
查看>>
ubuntu软件卸载方法
查看>>
android学习心得之UI
查看>>
电子书下载:Windows Phone 7 开发31日谈
查看>>
在MVC中使用NHibernate学习记录
查看>>