gpt4 book ai didi

c# - WPF MVVM : How to close a window

转载 作者:IT王子 更新时间:2023-10-29 03:43:43 24 4
gpt4 key购买 nike

我有一个 Button,当它被点击时它会关闭我的窗口:

<Button x:Name="buttonOk"  IsCancel="True">Ok</Button>

在我将 Command 添加到 Button 之前这很好,即

<Button x:Name="buttonOk" 
Command="{Binding SaveCommand}"
IsCancel="True">Ok</Button>

现在它没有关闭,大概是因为我正在处理 Command。我可以通过放入 EventHandler 并调用 this.Close() 来解决这个问题,即

<Button x:Name="buttonOk" 
Click="closeWindow"
Command="{Binding SaveCommand}"
IsCancel="True">Ok</Button>

但现在我的代码后面有代码,即方法 SaveCommand。我正在使用 MVVM 模式,SaveCommand 是我后面的代码中唯一的代码。

我怎样才能以不同的方式执行此操作,以免使用代码隐藏?

最佳答案

我刚刚完成了一个 blog post关于这个话题。简而言之,使用 getset 访问器将 Action 属性添加到您的 ViewModel。然后从您的 View 构造函数定义 Action。最后,在应该关闭窗口的绑定(bind)命令中调用您的操作。

在 View 模型中:

public Action CloseAction  { get; set;}

View 构造函数中:

private View()
{
InitializeComponent();
ViewModel vm = new ViewModel();
this.DataContext = vm;
if ( vm.CloseAction == null )
vm.CloseAction = new Action(this.Close);
}

最后,在任何应该关闭窗口的绑定(bind)命令中,我们可以简单地调用

CloseAction(); // Calls Close() method of the View

这对我有用,似乎是一个相当优雅的解决方案,并为我节省了大量编码工作。

关于c# - WPF MVVM : How to close a window,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4376475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com