C# 处理动态片段的MvvmCross-ViewModel命令
在MvvmCross N=26教程中,通过视图中的按钮单击事件(下面的代码片段)将动态片段加载到帧中。但是,我试图弄清楚如何在ViewModel而不是视图中处理单击事件。单击按钮后,我如何知道按钮已单击,并在视图中,在帧中加载正确的片段 例如,在FirstView xml中可能有10个片段和一个帧。我希望能够根据FirstViewModel中引用的对象的属性加载该帧中这10个片段中的任意一个。我可以在视图中检查该属性并从10个可用片段中加载我想要的片段吗?(即,删除视图中的but1.Click事件,并且仍然基于ViewModel中对象的值运行事务)C# 处理动态片段的MvvmCross-ViewModel命令,c#,android-fragments,xamarin.android,mvvmcross,C#,Android Fragments,Xamarin.android,Mvvmcross,在MvvmCross N=26教程中,通过视图中的按钮单击事件(下面的代码片段)将动态片段加载到帧中。但是,我试图弄清楚如何在ViewModel而不是视图中处理单击事件。单击按钮后,我如何知道按钮已单击,并在视图中,在帧中加载正确的片段 例如,在FirstView xml中可能有10个片段和一个帧。我希望能够根据FirstViewModel中引用的对象的属性加载该帧中这10个片段中的任意一个。我可以在视图中检查该属性并从10个可用片段中加载我想要的片段吗?(即,删除视图中的but1.Click事
您建议的将vm属性映射到要显示的片段的方法应该有效,是的 要使用它,只需订阅视图代码中已更改的属性(有一些弱引用帮助器类和扩展方法可以帮助实现这一点)
或者,这篇博文——介绍了一个允许通过片段导航的迷你框架 mvvmcross教程片段示例中的莎士比亚示例也使用了类似的方法
应该可以根据您的需要调整代码您建议的将vm属性映射到要显示的片段的方法应该有效,是的 要使用它,只需订阅视图代码中已更改的属性(有一些弱引用帮助器类和扩展方法可以帮助实现这一点)
或者,这篇博文——介绍了一个允许通过片段导航的迷你框架 mvvmcross教程片段示例中的莎士比亚示例也使用了类似的方法 应该可以根据您的需要调整代码
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();
};