android - 在MVVMCross中的ItemTemplate中绑定(bind)item对象

标签 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" />

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

<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 的绑定(bind)中,我需要传递整个对象,因为根据每个 Historic.Action,我将添加一个使用 Historic.AdditionalParameter、Historic.NewValue 的文本,历史性的.OldValue!!!

我不知道如何根据绑定(bind)到转换器的值传递 3 个参数,或者如何绑定(bind)整个对象,因此我的转换器将如下所示: 我的转换器:MvxValueConverter

说清楚了吗?谁能帮我吗?

谢谢您的问候,

最佳答案

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

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

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

    local:MvxBind="Text HistoricDetailsToString(.)"

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

例如:

If $SourcePath$ is omitted or a single period "." is used, then the Source used is the whole of the ViewModel.

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

关于android - 在MVVMCross中的ItemTemplate中绑定(bind)item对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23061162/

相关文章:

c# - Xamarin Android TextColor 属性在不同设备上表现异常

sql-server - 不锁定 SQL Server 40,000+ 行的数据集更新

c - sqlite 是按引用绑定(bind)还是按值绑定(bind)?

java - Android:如果在方法中调用 AsyncTask.execute(new Runnable()),则重写 onPostExecute()

java - 将 JSON 数组更改为 pojo 对象数组

xamarin - 在 xamarin.mac 中仅允许 NsTextField 输入数字

c# - 显示灰色的推送通知图标

php - 在 DNS 区域 Bind 10 中运行 PHP

android如何使用layout_height ="match_parent"将Imagebutton放在右边

android - 任务程序类型已存在执行失败?