MvvmCross 检测 RequestClose 或后退按钮按下

标签 mvvmcross

我发现这个主题说 MvvmCross 无法检测 RequestClose 或使用按下后退按钮:WP7 MVVMCross Detect RequestClose or BackKeyPressed inside ViewModels backkeypressed-inside-viewmodels

自 2012 年 5 月以来有什么变化吗?为什么这个功能没有内置到 MvvmCross 中?我不想重新设计轮子,这似乎可以非常简单地内置到 Android、WP7 和 iOS 中。如果找不到解决方案,我将最终构建它。

最佳答案

之前的建议还是对的。

it seems like this can be built very simply into Android, WP7, and iOS

我可能错了或遗漏了什么,但在过去我尝试构建它时,简单似乎很快变得复杂了:(


虽然在一个特定情况下它可能看起来很简单,但对于一个通用框架来说,还有许多其他情况需要考虑——例如当使用枢轴、选项卡、弹出窗口、模式、 Split View等时 - 在这些多种情况下,标准方法可能并不完全通用。

尤其是 iOS,有时会使这种检测变得更加困难(尤其是在您的 UIViewController 可能在也可能不在 NavigationController 内的一般情况下)。

可以更简单的是检测 View 是否可见并向事件发出信号 - 但即便如此似乎也不完全简单 - 在 iOS 中有些情况下不会调用 ViewDidDisappear - 此外,这些事件可能根本不是您的应用程序需要响应的...

虽然您可能觉得只需要一个轮子,但显而易见的事实是,没有一种通用的轮子 - 轮子有许多不同的样式和尺寸。我现在已经看到了很多 MvvmCross 应用程序……我还没有弄清楚标准应用程序是什么样子的。一个应用中“明显”正确的设计和架构可能看起来与其他应用中采用的方法完全不同。

All I need is a wheel


一般来说,我怀疑个别应用程序需要这种功能的地方会出现在非常明确的场景中 - 例如在已知的表示框架中使用已知的 View 类型。在那些情况下,我怀疑仅针对该应用程序场景实现一些东西对于当时的应用程序开发人员来说将是非常直接的。我还怀疑其中一些场景可以在某些应用程序之间共享 - 但我不确定一种代码模式是否适合所有 - 甚至很多。

我非常非常高兴看到用户在写博客、github-post 或论坛-谈论他们在这方面的经验。像 http://www.gregshackles.com/2012/11/returning-results-from-view-models-in-mvvmcross/ 这样的博文展示如何在 Mvvm 之上应用和重用模式。

甚至可能是在这些博客文章中,我们找到了一种在核心 mvvmcross(和其他)库中获得更多功能的方法——但对我来说,保持核心库的轻量、灵活和可扩展性也很重要可能。

当人们像您一样谈论他们的跨平台 mvvm 体验时,我会尽力使链接页面保持最新 - http://slodge.blogspot.co.uk/p/mvvmcross-quicklist.html - 这有望帮助人们分享想法、概念和代码。

关于MvvmCross 检测 RequestClose 或后退按钮按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14344576/

相关文章:

android - 使用 MvxGridView 在 ItemClick 上通过 MvvmCross MvxBind 传递参数

xamarin - MvvmCross CreateBindingSet 的预期用途

android - UnsatisfiedLinkError : No implementation found for void mono. android.text.TextWatcherImplementor

ios - 如何在 UiTableViewCell 中动态更改 ImageView?

MvvmCross:ShowViewModel 是否总是构造新实例?

android - MvvmCross Show(intent) 不再可用

visual-studio - 如何为可移植类库构建目标包?

c# - 这个变量从哪里来? MVVMcross UWP框架示例

c# - C#中的 bool 运算

启用链接器的 MvvmCross 从 4.2.3 更新到 4.4.0 后,Android EditText 绑定(bind)被破坏