1

在 MvvmCross N=26 教程中,动态片段通过视图中的按钮单击事件加载到框架中(下面的代码片段)。但是,我试图弄清楚如何在 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();
            };
4

1 回答 1

1

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

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


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

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

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

于 2013-08-07T22:35:49.440 回答