gpt4 book ai didi

c# - 如何在 MVVMCross WPF 应用程序中实现关闭按钮?

转载 作者:太空宇宙 更新时间:2023-11-03 21:44:27 25 4
gpt4 key购买 nike

我在我的 WPF 应用程序中使用 MVVMCross,我想提供一个关闭(或退出 ) 按钮关闭整个应用程序。是否有使用 MVVMCross 功能的直接方法来做到这一点?

我在我的 MainViewModel 中尝试了以下方法:

public class MainViewModel : MvxViewModel
{
private MvxCommand _closeCommand;
public MvxCommand CloseCommand {
get {
return _closeCommand ?? (_closeCommand = new MvxCommand(DoClose));
}
}

public void DoClose() {
Close(this);
}
}

不幸的是,没有用。当我按下绑定(bind)到 CloseCommand 的按钮时,DoClose 方法确实被调用,但 View 模型(和相应的 View )无法关闭,即使 WPF App StartupUri 设置为 MainView

最佳答案

许多 MvvmCross 平台不支持应用程序自行关闭 - 这在 iOS、WindowsPhone、Android、WindowsPhone 等中是不受欢迎的行为 - 那里的公共(public) API 不支持它 - 所以这不是一个常见的跨平台请求。

但是,如果您想为那些支持它的平台实现此功能,那么我认为放置它的最佳位置可能是在演示者中或自定义 UI 注入(inject)服务中。


要将其放入自定义演示器中,只需:

  • 创建自定义演示者类(基于 MvxWpfViewPresenter.cs )
  • 在您的 Setup.cs 中重写 CreatePresenter 方法时返回此类的一个实例
  • 覆盖自定义演示器中的 ChangePresentation 方法 - 此方法可能会使用“知名”MvxClosePresentationHint.cs这是 Close 发送的内容,或者它可以使用您在 ViewModel 中通过 ChangePresentation(MvxPresentationHint hint) 定义和发送的新自定义演示提示。

要将此功能放在某些自定义 UI 服务中,请参阅 http://mvvmcross.wordpress.com/ 中的 N=31


如果您正在查看此关闭区域,那么您可能还想考虑在关闭应用程序时采取哪些步骤(通过用户或操作系统操作)。 MvvmCross 确实暴露了框架内常见的“生命周期监视器” Hook 的开始,但实际上在实践中这些目前是非常基本的——所以你可能会发现你需要在这里构建你自己的公共(public)层。

关于c# - 如何在 MVVMCross WPF 应用程序中实现关闭按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17783982/

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