首页 > 解决方案 > 如何从 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?

标签: xamarinxamarin.forms

解决方案


您可以通过在项目中添加设计模式来做到这一点。我使用 MVVM Light 并添加一个ViewModelLocator类来创建单例模式。

https://www.c-sharpcorner.com/article/xamarin-forms-mvvm-viewmodel-locator-using-mvvm-light/

按照链接,然后你可以写

var xyz = App.ViewModelLocator.YourViewModel.YourPublicProperty;

推荐阅读