2

我正在开发一个 MVVMCross 多平台应用程序,但在使用 Converters 时遇到以下问题:

我在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" />

其中,Historics 是一个列表。然后,我在布局资源中有:

<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

明白了吗?谁能帮我?

感谢您的问候,

4

1 回答 1

3

鉴于转换的复杂性,我认为传递整个对象可能最简单,只需使用一个句点即可:

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

或 - 使用西藏语法 - 作为:

    local:MvxBind="Text HistoricDetailsToString(.)"

我认为维基文章也可能有所帮助:https ://github.com/MvvmCross/MvvmCross/wiki/Databinding

例如:

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

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

于 2014-04-14T13:36:02.207 回答