首页 > 解决方案 > FreshMVVM - 从不继承 FreshBasePageModel 的子 ContentView 打开页面的最佳方式

问题描述

以下代码显示了 OpenPage 的 2 个示例Command。由于MainPageModel它直接源自FreshBasePageModel. 但是,第二个 OpenPage 调用ChildPageModel将不起作用(或编译)。我不想到处传递父模型。那么,如何使用 FreshMVVM 打开一个新页面ChildPageModel(并让后退按钮工作等)?

public class MainPageModel : FreshBasePageModel
{
    public Command OpenPage
    {
        get
        {
            return new Command(() =>
            {
                CoreMethods.PushPageModel<NewPageModel>();
            });
        }
    }

    public ChildPageModel ChildPageModel { get; set; }
}

public class ChildPageModel 
{
    public Command OpenPage
    {
        get
        {
            return new Command(() =>
            {
                // ??????
                CoreMethods.PushPageModel<NewPageModel>();
            });
        }
    }
}

标签: xamarin.formsfreshmvvm

解决方案


以下代码将完成此操作...

var page = FreshPageModelResolver.ResolvePageModel<MainPageModel>();
var model = page.GetModel() as MainPageModel;
var navService = FreshMvvm.FreshIOC.Container.Resolve<IFreshNavigationService>();
await navService.PushPage(page, null);

推荐阅读