zoukankan      html  css  js  c++  java
  • WPF MVVM中在ViewModel中关闭或者打开Window

    这篇博客将介绍在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);
            }
        }

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

  • 相关阅读:
    SGU 187 Twist and whirl
    伸展树---初步学习
    poj 2503 Babelfish
    sublime 3 phpfmt配置(大括号对齐)
    Linux Shell 错误: $' ': command not found错误解决
    redis 使用场景
    wireshake tcp 三次握手详解
    ip地址和子网掩码
    phpstorm 远程调式 php
    win10,ubuntu时间不对问题
  • 原文地址:https://www.cnblogs.com/yang-fei/p/5352838.html
Copyright © 2011-2022 走看看