【问题标题】:MvvmCross ViewModel Command that Handles Dynamic Fragment处理动态片段的 MvvmCross ViewModel 命令
【发布时间】:2013-08-07 19:34:10
【问题描述】:

在 MvvmCross N=26 教程中,动态片段通过 View 中的按钮单击事件加载到框架中(下面的代码 sn-p)。但是,我试图弄清楚如何在 ViewModel 中而不是在 View 中处理 click 事件。单击按钮后,我如何知道按钮被单击并在视图中加载框架中的正确片段?

例如,我可能在 FirstView xml 中有 10 个片段和一个帧。我希望能够根据 FirstViewModel 中引用的对象的属性在该帧中加载这 10 个片段中的任何一个。我可以在视图中检查该属性并从可用的 10 个片段中加载我想要的片段吗? (即移除 View 中的 but1.Click 事件,仍然根据 ViewModel 中对象的值运行事务)

but1.Click += (sender, args) =>
            {
                var dNew = new DubFrag()
                    {
                        ViewModel = ((SecondViewModel) ViewModel).Sub
                    };
                var trans3 = SupportFragmentManager.BeginTransaction();
                trans3.Replace(Resource.Id.subframe1, dNew);
                trans3.AddToBackStack(null);
                trans3.Commit();
            };

【问题讨论】:

    标签: c# android-fragments xamarin.android mvvmcross


    【解决方案1】:

    您建议的将 vm 属性映射到要显示的片段的方法应该有效。

    要使用它,只需订阅视图代码中更改的属性(有一些弱引用助手类和扩展方法可以帮助解决这个问题)


    另外,这篇博文 - http://enginecore.blogspot.ca/2013/06/more-dynamic-android-fragments-with.html?m=1 - 介绍了一个允许按片段导航的迷你框架。

    mvvmcross-tutorials 片段示例中的莎士比亚示例中使用了类似的方法。

    应该可以根据您的需要调整该代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-23
      • 1970-01-01
      • 2014-07-31
      • 2016-10-18
      • 1970-01-01
      • 2021-03-07
      相关资源
      最近更新 更多