MvxSpinner绑定到ItemSource属性不起作用

时间:2018-05-29 14:14:48

标签: xamarin mvvmcross mvxspinner

我有一个非常简单的代码段如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/lib/com.myco.app"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="20px">
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="24dp"
        android:layout_marginTop="10dip"
        android:text="@string/planATripLabel"
        android:textColor="#FF9900" />
    <Spinner
        android:id="@+id/spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:prompt="@string/planet_prompt" />

  <!--local:MvxBind="ItemsSource Items; " />-->

    <MvxSpinner
        android:id="@+id/spinner1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:prompt="@string/planet_prompt"
        local:MvxBind="ItemsSource Items" />
</LinearLayout>

ViewModel包含以下代码:

 private ObservableCollection<string> _items = new ObservableCollection<string>()
        {
            "One", "Two", "Three"
        };
        public ObservableCollection<string> Items
        {
            get
            {
                return _items;
            }
            set { _items = value; RaisePropertyChanged(() => Items); }
        }

但是,当我运行应用程序时,不会显示任何内容。常规微调器确实显示了它的项目,因为我在视图类本身中有代码从Xamarin的站点复制,如下所示:

  Spinner spinner = FindViewById<Spinner>(Resource.Id.spinner);

            spinner.ItemSelected += new EventHandler<AdapterView.ItemSelectedEventArgs>(spinner_ItemSelected);
            var adapter = ArrayAdapter.CreateFromResource(
                this, Resource.Array.planets_array, Android.Resource.Layout.SimpleSpinnerItem);

            adapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
            spinner.Adapter = adapter;

我错过了什么?

1 个答案:

答案 0 :(得分:1)

我认为您的local命名空间没有考虑MvxBind

我替换

xmlns:local="http://schemas.android.com/apk/lib/com.myco.app"

with(我总是像这样使用它,使用res-auto)

xmlns:local="http://schemas.android.com/apk/res-auto"

如果这不是问题,我会向MvxItemTemplate提供自定义MvxDropDownItemTemplate和自定义MvxSpinner,以查看默认设置是否无效。并检查Output窗口以查看是否显示任何错误。

如果您需要任何帮助,请告诉我。

HIH