在MvxItemTemplate中使用的Fragment上设置ViewModel

时间:2014-10-09 10:19:16

标签: android-fragments mvvmcross

我查看了"Down at Android Fragments"和示例,他们在视图中显示了单个片段的使用。在该视图中,您可以找到该片段并设置其“ViewModel

我们在一些地方这样做,如此

// Expand the patient banner
var myFragment = (MyFragment)SupportFragmentManager.FindFragmentById(Resource.Id.banner);
this.vm = (MyViewModel)this.ViewModel;
myFragment.ViewModel = this.vm;

没关系。我不知道该怎么做是在片段的MvxItemTemplate中使用片段时在片段上设置ViewModel。

例如,将MvxItemTemplate设置为此axml文件的绑定MvxListView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    local:MvxBind="Click ClickCommand">
    <fragment
        class="MyComp.MyDept.Droid.Views.ItemFragment"
        android:id="@+id/ItemFragment"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

如何为每个ListView项目中的片段设置正确的Item ViewModel?

1 个答案:

答案 0 :(得分:0)

最简单的方法是在适配器中执行此操作。当包含项目的列表调用GetBindableView时,您可以访问dataContext和templateId,它首先产生了单元格的创建,因此您可以在将片段直接从用简单的FindFragmentById查看。

所以,大概这样的事情对你来说应该没问题:

$("#coms").click(function(){
    $(".dontprint").toggle();
});

首先,获取片段所在的视图。其次,获取片段管理器并在其上执行FindFragmentById以在视图中查找特定片段。最后,设置DataContext并将其返回。