c# - 在事件上使用 GUI 功能 (MVVM)
问题描述
我最近开始使用 Xamarin 和 MVVM 进行开发,但遇到了一个问题,我真的不知道如何解决。
我将我的事件绑定View
到ICommand
我的ViewModel
. 但是这些事件应该能够触发例如一个DisplayAlert
或一个Navigation.PushAsync
呼叫。
现在我知道这些问题有一些解决方法,但不会引用违反 a 预期用途的Navigation
对象,因为它不知道?ViewModel
ViewModel
View
我真的很想保持一个严格的、纯粹的 MVVM 模式,那么我该如何实现呢?
编辑
感谢您的回答。我进行了更多搜索,发现这篇Xamarin.forms
博文中提到了一些库,这似乎有帮助。
我将尝试prism,它具有 aNavigation Service
和 a Page Dialog Service
。
编辑 02
否则,您可以使用@Julien 提到的MessagingCenter 。
解决方案
您提出的问题在 MVVM 世界中非常常见,这将其变成了自以为是的话题。一些开发人员认为您应该首先在 Pages / Views - V 之间导航,其他开发人员认为您应该首先在 ViewModels - VM 之间导航。两者都有各自的优点和缺点,并且在 WWW 上有很多关于它的资源。
我建议熟悉这两种不同的方法,然后决定使用哪一种。你可以检查现有的 MVVM 框架,看看它们是如何解决这个问题的。幸运的是这个话题很有趣,所以你应该享受调查之旅。
很可能不会有适合不同类型项目的灵丹妙药。要时刻铭记在心。
祝你好运!
推荐阅读
- javascript - 我在使用 Vue.js 创建待办事项列表时遇到问题
- viola-jones - 确定 Haar 特征的阈值
- .htaccess - 使用 IP 而不是域阻止任何内容
- python - 无法通过带有 webdriver 的 xpath 为 Python 上的标签找到元素
- javascript - 使用 Selenium 滚动对网页进行不完整的抓取
- c# - C# .NET Framework 4.8 API 调用不适用于新 URI
- python - 我无法在 Ubuntu 上运行 Python 文件
- r - 为什么我的 ggplot 图没有显示在闪亮上?
- php - 在pdo中查询后查询?绑定问题
- ruby-on-rails - Rails - 网址中的两个或多个点