xamarin - 如何从 ViewModelA 调用的另一个 ViewModel 访问 ViewModelA 中字段的值
问题描述
我有一个页面和一个弹出页面。
public partial class PageA
{
public PageAViewModel vm;
public PageA()
{
BindingContext = vm = new PageAViewModel();
InitializeComponent();
}
public partial class PageAViewModel
{
public int Field1;
public int Field2;
public int Field3;
public async Task OpenPopup()
{
PopupA popup = new PopupA();
await PopupNavigation.Instance.PushAsync(popup);
}
public void Method1() { }:
和
public partial class PopupA
{
public PopupViewModel vm;
public PopupA()
{
BindingContext = vm = new PopupViewModel();
InitializeComponent();
}
public partial class PopupViewModel
{
// How can I get the value of Field1, Field2 and Field3 here?
// How can I call Method1 here?
解决方案
您可以通过在项目中添加设计模式来做到这一点。我使用 MVVM Light 并添加一个ViewModelLocator
类来创建单例模式。
https://www.c-sharpcorner.com/article/xamarin-forms-mvvm-viewmodel-locator-using-mvvm-light/
按照链接,然后你可以写
var xyz = App.ViewModelLocator.YourViewModel.YourPublicProperty;
推荐阅读
- javascript - 动漫js动画问题
- javascript - 使用 TMDb 和 axios npm 的电影搜索网站
- mapbox-ios - z-index MGLAnnotationView mapbox IOS
- json - InDesign Socket HTTP 响应缺少部分
- javascript - 控制台上的 chrome.runtime.sendMessage 不起作用
- assembly - 控制台中的 NASM 汇编器问号
- javascript - 用数组反应 setState,如何在没有构造的情况下自动创建数组 id
- java - 如何使单选按钮在切换活动时不改变?
- django - 获取 ORA-00918: column ambiguously defined 错误,从 2.0 升级到 django 3.03 后尝试打开 django 管理页面
- android - Flutter apk 未安装在某些手机中