【问题标题】:MVVMCross: Can not close viewMVVMCross:无法关闭视图
【发布时间】:2020-03-27 08:30:27
【问题描述】:

大家好,我现在在 MVVMCross 中有一个非常奇怪的问题。

我正在尝试使用navigationService.Close(this) 关闭页面,但它没有关闭。在日志记录中,我看到以下消息:Ignoring close for ViewModel - Matching View for ViewModel instance failed。

我在 Github 上查看了抛出此消息的位置,这正是它所说的找不到需要关闭的视图。但现在奇怪的是:如果我只是将演示文稿更改为模态(在这种情况下我不想要),那么关闭命令就会起作用。

这是一个错误吗?难道我做错了什么?谁能帮帮我?

也许是因为我们有一个 TabbedRootViewModel 在其中完成导航?

【问题讨论】:

  • 能否请您添加出现问题的代码?
  • 我只是在 ViewModel 中调用navigationService.Close(this)。还有哪些代码有助于查看?
  • 我使用navigationservice.Close(this) 它有效。我在 MvxContentPage 中使用它,你在什么视图中使用它?你可以试试navigationService.Navigate(previousViewModel)
  • 我也有一个 MvxContentPage,但导航发生在 MvxTabbedPagePresentation 中。所以这可能是原因。我尝试了navigationService.Navigate(previousViewModel) 并且可以正常工作,但是当然它会作为下一页导航,这不是我想要的。
  • 对于遇到此问题的其他人来说,对我来说,我使用了一个返回堆栈提示处理程序来清除 ViewAppeared 中的堆栈,导致对 avigationService.Close(this) 的调用失败。不过,我没有向控制台报告任何错误。

标签: xamarin xamarin.forms mvvmcross


【解决方案1】:

通过在TabbedRootViewModel 中设置WrapInNavigationPage = true 来修复它(不知何故)。这确实带来了一些其他问题,例如双导航栏。我通过关闭 XAML 中的导航栏来解决这个问题。所以这不是理想的解决方案,但它是一个解决方案:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多