如何在MvxDropdownItemTemplate和MvxItemTemplate中添加绑定到MvxSpinner

时间:2013-08-26 22:16:48

标签: android mvvmcross

我从以下代码中提取了这段代码:https://github.com/slodge/MvvmCross-Tutorials/blob/master/MoreControls/MoreControls.Droid/Resources/Layout/FirstView.axml

<?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="fill_parent">
    <Mvx.MvxSpinner
        android:layout_width="match_parent"
        android:layout_height="?android:attr/listPreferredItemHeight"
        local:MvxBind="ItemsSource Shapes; SelectedItem Current" />

    <!--
        could be customised using
        local:MvxDropDownItemTemplate="@layout/spinner_dropdownitem_shape"
        local:MvxItemTemplate="@layout/spinner_item_shape"
    -->

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="40dp"
        local:MvxBind="Text Current" />
    <MC.ShapeView
        android:layout_width="fill_parent"
        android:layout_height="300dp"
        local:MvxBind="Shape Current" />
</LinearLayout>

评论提到可以通过传递MvxDropDownItemTemplate和MvxItemTemplate布局来自定义外观。我们假设我们将对这两个模板使用这个简单的布局:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res/Project.Ui.Droid"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        local:MvxBind="Text ???????" />
</FrameLayout>

MvxSpinner将枚举的名称(CircleSquareTriangle)显示为每个项目的文本。在不更改视图模型的情况下,是否可以在模板中创建一个绑定,该绑定显示MvxSpinner在没有使用模板时默认显示的相同内容?如果是这样,那个绑定会是什么样的?如果那是不可能的,那么实现这一结果的最佳方法是什么?

1 个答案:

答案 0 :(得分:3)

  

在模板中,显示MvxSpinner在没有使用模板时默认显示的相同内容?如果是这样,那个绑定会是什么样的?如果那是不可能的,那么实现这一结果的最佳方法是什么?

默认模板在对象上使用ToString()

要实现同样的目的,您可以使用Whole Object绑定。从the wiki开始,您应该可以使用空路径或路径的单个Period指定。由于我们已经看到some issues reported recently具有空路径绑定,因此我建议使用句点:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res/Project.Ui.Droid"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        local:MvxBind="Text ." />
</FrameLayout>