在MVVMCross中的ItemTemplate中绑定项目对象

时间:2014-04-14 13:17:17

标签: android xamarin bind mvvmcross converters

我正在开发一个MVVMCross多平台应用程序,我在转换器方面遇到以下问题:

我在Android中有一个listView,代码如下:

<MyProjectName.Droid.MvxCustomViews.MvxListView.MvxDroidListView
    android:id="@+id/historicList"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:cacheColorHint="#00000000"
    android:listSelector="#00000000"
    android:fadingEdge="none"
    local:MvxBind="ItemsSource Historics;"
    local:MvxItemTemplate="@layout/historiclistitem" />

Where,Historics是List。 然后,我在布局资源中:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#FFFFFF"
        android:orientation="horizontal">
        <ImageView
            android:id="@+id/historicIcon"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_marginRight="5dp"
            android:layout_gravity="center"
            local:MvxBind="AssetImagePath UpdateType, Converter=HistoricTypeToSource" />
        <TextView
            android:id="@+id/listHistoricType"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"
            android:text="Anexo"
            android:textColor="#0000FF"
            android:textSize="16sp"
            android:layout_gravity="center"
            local:MvxBind="Text UpdateType, Converter=HistoricTypeToString" />
    </LinearLayout>
    <TextView
        android:id="@+id/listHistoricTypeDetail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Anexo adicionado"
        android:textColor="#000000"
        local:MvxBind="Text ???, Converter=HistoricDetailsToString" />

问题是,一切正常,但在listHistoricTypeDetail的TextView的绑定我需要传递整个对象,因为,根据每个Historic.Action,我将添加一个使用的文本Historic.AdditionalParameter,Historic.NewValue,Historic.OldValue !!!

我没有弄清楚如何传递3个参数,具体取决于绑定到转换器的值,或者如何绑定整个对象,所以我的转换器将是这样的: MyConverter:MvxValueConverter

这是清楚的吗?任何人都可以帮助我吗?

谢谢你,

1 个答案:

答案 0 :(得分:3)

考虑到转换的复杂性,我认为通过一个句点传递整个对象可能是最简单的:

    local:MvxBind="Text ., Converter=HistoricDetailsToString"

或 - 使用Tibet-syntax - as:

    local:MvxBind="Text HistoricDetailsToString(.)"

我认为维基文章也可以提供帮助:https://github.com/MvvmCross/MvvmCross/wiki/Databinding

e.g:

  

如果省略$SourcePath$或单个句点“。”如果使用,则使用的Source是整个ViewModel。

来自https://github.com/MvvmCross/MvvmCross/wiki/Databinding#swiss