处理动态片段的MvvmCross ViewModel命令

时间:2013-08-07 19:34:11

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

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

例如,我可能在FirstView xml中有10个片段和一个帧。我希望能够根据FirstViewModel中引用的对象的属性加载该帧中的任何10个片段。我可以在View中检查该属性并从可用的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();
            };

1 个答案:

答案 0 :(得分:1)

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

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


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

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

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