Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 处理动态片段的MvvmCross-ViewModel命令_C#_Android Fragments_Xamarin.android_Mvvmcross - Fatal编程技术网

C# 处理动态片段的MvvmCross-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事

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

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


您建议的将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();
            };