这篇博客将介绍在MVVM模式ViewModel中关闭和打开View的方法。

1. ViewModel中关闭View

    public class MainViewModel
{
public DelegateCommand<Window> CloseWindowCommand { get; private set; } public MainViewModel()
{
CloseWindowCommand = new DelegateCommand<Window>(CloseWindow);
} private void CloseWindow(Window window)
{
if(window != null)
{
window.Close();
}
}
}
<Window x:Class="MvvmCloseWindowApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MvvmCloseWindowApp"
mc:Ignorable="d"
x:Name="MWindow"

Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Content="Close Window" Width="100" Height="25" Command="{Binding CloseWindowCommand}" CommandParameter="{Binding ElementName=MWindow}" />
</Grid>
</Window>

2. 在ViewModel中打开Window

    public interface IWindowService
{
void ShowWindow(object viewModel);
}
    public class SecondWindowService : IWindowService
{
public void ShowWindow(object viewModel)
{
var second = new SecondWindow(); second.DataContext = viewModel; second.Show();
}
}
    class MainViewModel
{
public DelegateCommand OpenNewWindow { get; private set; } public MainViewModel()
{
OpenNewWindow = new DelegateCommand(OpenWindow);
} private void OpenWindow()
{
SecondWindowService service = new SecondWindowService(); SecondViewModel viewModel = new SecondViewModel(); service.ShowWindow(viewModel);
}
}

感谢您的阅读,代码点击这里下载。

WPF MVVM中在ViewModel中关闭或者打开Window的更多相关文章

  1. WPF MVVM 如何在ViewModel中操作View中的控件事件

    (在学习Wpf的时候,做一个小例子,想在TextBox改变后,检验合法性,并弹出提示.在找了很多贴后,发现这个小例子,抄袭过来,仅供参考. 最后也找到了适合自己例子的办法:在出发TextChanged ...

  2. WPF+MVVM学习总结 DataGrid简单案例

    一.WPF概要 WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分.它提供了统一的 ...

  3. WPF/MVVM Quick Start Tutorial - WPF/MVVM 快速入门教程 -原文,翻译及一点自己的补充

    转载自 https://www.codeproject.com/articles/165368/wpf-mvvm-quick-start-tutorial WPF/MVVM Quick Start T ...

  4. 二、myeclipse中配置mybatis中xml的自动提示

    以mybatis中mapper.xml为例 方法一: 步骤一:在mybatis-3.3.0.jar包中寻找mybatis-3-mapper.dtd文件. 可以用360压缩打开mybatis-3.3.0 ...

  5. WPF MVVM 中怎样在ViewModel总打开的对话框在窗体之前

    今天在WPF的项目中,写打印插件,在ViewModel中对需要弹出打印对话框,而对话框如果没有Owner所属的时候经常会被当前应用程序遮住,导致我都不知道到底弹出来没有! 参照:http://www. ...

  6. wpf MVVM ViewModel 关闭View显示

    上次说到了不同wpf窗体之间的交互,这个在MVVM模式之中用起来会方便很多 下面我来说下在ViewModel中关闭View的方法,其实也很简单的,注释照样不写,一看就懂的 public partial ...

  7. wpf mvvm模式下 在ViewModel关闭view

    本文只是博主用来记录笔记,误喷 使用到到了MVVM中消息通知功能 第一步:在需要关闭窗体中注册消息 public UserView() { this.DataContext = new UserVie ...

  8. [WPF] 在 ViewModel 中让数据验证出错(Validation.HasError)的控件获得焦点

    1. 需求 在 MVVM 中 ViewModel 和 View 之间的交互通常都是靠 Icommand 和 INotifyPropertyChanged,不过有时候还会需要从 MVVM 中控制 Vie ...

  9. 基于WPF系统框架设计(7)-TextBox/PasswordBox在ViewModel中支持回车命令

    应用场景 我现在做一个系统登录功能,要求在PasswordBox上输完密码后回车,能够响应Enter事件,并执行ViewModel中对应的方法.如果登录成功则隐藏当前窗口显示主窗体,登录失败则焦点返回 ...

随机推荐

  1. QQ个人文件夹中的文件被占用,解决办法

    我的情况是记住密码的账号不可以登录,不记住密码的账号确可以登录,突然就这样,我也很郁闷. 找到路径C:\Users\Public\Documents\Tencent\QQ下的UserDataInfo. ...

  2. 软件打包为exe NSIS单文件封包工具V2.3

    NSIS单文件封包工具V2.3 这是一款基于NSIS模块的封包制作工具,lzma算法最大压缩率,支持制作单文件,以及NSIS自定义解压封包. 支持注册dll,exe,reg,bat文件 默认提取设置程 ...

  3. Scales小谈gulp

     gulp是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务. 外网:http://gulpjs.com/ 中文官网:http://www.gulpjs.com.cn/ 易于使用 ...

  4. div

    <div id="container"> <div id="left">左边</div> <div id=" ...

  5. bzoj 2301: [HAOI2011]Problem b

    2301: [HAOI2011]Problem b Time Limit: 50 Sec Memory Limit: 256 MB Submit: 3757 Solved: 1671 [Submit] ...

  6. centos6.7设置非root帐户自动登录

    1.在/etc/gdm/custom.conf文件中修改并加入以下这段 [daemon]AutomaticLogin=你的用户名AutomaticLoginEnable=True 2.重启 reboo ...

  7. css 实现三角形 实现过程

     1.纯色的全等的三角形实现 下面的就是实际实现  没有宽高 只有边框 都是透明 根据箭头的方向 给边框方法加颜色  比如需要像右箭头 只需要给border-right-color:颜色值; 即可 c ...

  8. C# BlockCollection

    1.BlockCollection集合是一个拥有阻塞功能的集合,它就是完成了经典生产者消费者的算法功能. 它没有实现底层的存储结构,而是使用了IProducerConsumerCollection接口 ...

  9. Excel 锁定特定单元格 不允许更改

    1.首先,excel默认所有单元格都是被"锁定"的--当"锁定单元格"按钮被激活时. 因此,第一步,选择所有单元格,设置单元格格式,取消"保护&quo ...

  10. LYDSY模拟赛day1 Walk

    /* 依旧考虑新增 2^20 个点. i 只需要向 i 去掉某一位的 1 的点连边. 这样一来图的边数就被压缩到了 20 · 2^20 + 2n + m,然后 BFS 求出 1 到每个点的最短路即可. ...