gpt4 book ai didi

c# - 绑定(bind)到MVVM WPF中的窗口关闭事件?

转载 作者:行者123 更新时间:2023-12-03 10:52:05 47 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





handling window close button in wpf MVVM

(2 个回答)


7年前关闭。




我试图在我的 View 上捕获关闭事件以调用保存方法。我不希望用户能够关闭窗口并处理未保存的更改。我试过用

Application.Current.MainWindow.Close()

但是有问题的观点不是我的 MainWindow .有没有办法将关闭窗口绑定(bind)到 Xaml 中的命令:
public RelayCommand CloseWindow;
Constructor()
{
CloseWindow = new RelayCommand(CloseWin);
}

public void CloseWin(object obj)
{
Window win = obj as Window;
win.Close();
}

& Xaml:
<Button Command="{Binding CloseWindowCommand}" CommandParameter="{Binding ElementName=WindowNameTobeClose}" Content="Cancel" />

但是捕获窗口关闭事件而不是绑定(bind)到 UI 中定义的按钮?

最佳答案

这是我的解决方案。 Xaml 中的命名空间:

xmlns:z="http://schemas.microsoft.com/expression/2010/interactivity"

Xaml 绑定(bind):
 <z:Interaction.Triggers>
<z:EventTrigger EventName="Closing">
<i:InvokeCommandAction Command="{Binding CloseWindowCommand}" />
</z:EventTrigger>
</z:Interaction.Triggers>

我已经在项目中有一个命令助手类。这是我的 viewModel 中的公开属性:
   private ICommand _CloseArticleCommand;
public ICommand CloseArticleCommand
{
get { return _CloseArticleCommand; }
set
{
_CloseArticleCommand = value;
OnPropertyChanged("CloseArticleCommand");
}
}

该属性在 viewModel 构造方法中初始化:
  private void InitialiseBtnCommands()
{
CloseWindowCommand = new BtnCommand(CloseWindowCommandAction);
}

最后是执行保存的操作方法:
 private void CloseWindowCommandAction()
{
//Save your data etc.
}

关于c# - 绑定(bind)到MVVM WPF中的窗口关闭事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24260989/

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