0

以下代码显示了 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>();
            });
        }
    }
}
4

3 回答 3

0

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

var page = FreshPageModelResolver.ResolvePageModel<MainPageModel>();
var model = page.GetModel() as MainPageModel;
var navService = FreshMvvm.FreshIOC.Container.Resolve<IFreshNavigationService>();
await navService.PushPage(page, null);
于 2019-10-24T17:46:11.567 回答
0

您还应该使 ChildPageModel 从 FreshBasePageModel 继承。所有 PageModels 都应该继承自 FreshBasePageModel

于 2019-09-21T05:08:21.937 回答
0

我用三个页面(MainPage、SecondPage、ThirdPage)做了一个简单的例子。您可以从 HitHub 下载 FreshMVVMDemo 文件夹的源文件。 https://github.com/WendyZang/Test.git

如果要打开新页面,可以在子页面中添加命令。

#region Commands
    public Command GotoPageCommand
    {
        get
        {
            return new Command(async () =>
            {
                await CoreMethods.PushPageModel<ThirdPageModel>(); //replace the ThirdPageModel with the page you want to open
            });
        }
    }
    #endregion

如果要返回,请添加如下命令。

 #region Commands
    public Command GoBackSecondCommand
    {
        get
        {
            return new Command(async () =>
            {
                //await CoreMethods.PopPageModel();  //go back to main page
                await CoreMethods.PushPageModel<SecondPageModel>(); //Go back to third page
            });
        }
    }
    #endregion

在此处输入图像描述

于 2019-09-23T03:10:57.747 回答