首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用ViewModel类中的MVVM关闭窗口

在MVVM模式中,ViewModel不应直接处理视图(如窗口)。但是,你可以通过使用命令和数据绑定来实现关闭窗口的功能。以下是一个简单的示例:

首先,你需要创建一个命令,这个命令将在ViewModel中定义,并在视图中使用。

代码语言:javascript
复制
public class RelayCommand : ICommand
{
    private Action<object> execute;

    public RelayCommand(Action<object> execute)
    {
        this.execute = execute;
    }

    public bool CanExecute(object parameter)
    {
        return true;
    }

    public void Execute(object parameter)
    {
        this.execute(parameter);
    }

    public event EventHandler CanExecuteChanged;
}

然后,在ViewModel中,你可以创建一个命令来关闭窗口:

代码语言:javascript
复制
public class MyViewModel
{
    public ICommand CloseWindowCommand { get; private set; }

    public MyViewModel()
    {
        this.CloseWindowCommand = new RelayCommand(CloseWindow);
    }

    private void CloseWindow(object window)
    {
        if (window != null && window is Window)
        {
            ((Window)window).Close();
        }
    }
}

最后,在视图中,你可以将按钮的Click事件绑定到这个命令,并将窗口本身作为命令参数:

代码语言:javascript
复制
<Button Content="Close" Command="{Binding CloseWindowCommand}" CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"/>

在这个示例中,当你点击按钮时,它将执行CloseWindowCommand命令,该命令将关闭窗口。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券