MvxSpinner не привязывается

Поэтому мне нужно было изменить цвет текста моего MvxSpinner. Я вижу, вы не можете изменить цвет из кода xaml, поэтому мне пришлось использовать шаблоны для счетчика. Но до того, как я использовал шаблоны для счетчика, все правильно связывалось с моделью просмотра, теперь, похоже, он не может найти мои свойства в модели представления, когда я использую шаблоны. Есть ли способ показать текущую модель представления шаблонам?

Ниже приведены мои сегменты кода, если это поможет

<?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"
    android:background="#FFFFFF">
    <ImageView
        android:src="@drawable/synchramed_trans_300"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/imageView1" />
    <TextView
        android:text="Select Practice"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView1"
        android:textColor="#000000" />
    <MvxSpinner
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="40dp"
        android:textColor="#000000"
        local:MvxItemTemplate="@layout/item_spinner"
        local:MvxDropDownItemTemplate="@layout/item_spinnerdropdown"
        local:MvxBind="ItemsSource PracticeItems; SelectedItem SelectedPracticeItem" />
    <Button
        android:text="Generate Report"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button1"
        local:MvxBind="Click ReportCommand"
        style="@style/DefaultButtonText"
        android:background="@drawable/button_default_bg" />
</LinearLayout>

Item_Spinner

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:background="#fff000"
    android:foreground="#ffffff"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    local:MvxBind="Text Caption" />

Item_SpinnerDropDown

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:background="#fff000"
    android:foreground="#ffffff"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    local:MvxBind="Text Caption" />

ViewModel

public class HomeViewModel
        : MvxViewModel
    {
        string PracticeName = string.Empty;

        private readonly IMvxMessenger _messenger;
        private readonly IHomeService _homeService;
        public HomeViewModel(IHomeService homeService, IMvxMessenger messenger)
        {
            _homeService = homeService;
            _messenger = messenger;
            _homeService.GetReportList(this);
        }

        public HomeViewModel()
        {

        }

        public async Task InitializeViewModel()
        {
            await GetPractice ();
        }

        private async Task GetPractice()
        {
            try 
            {
                PracticeItems = new ObservableCollection<string>(await _homeService.GetPracticeList(this));
            } 
            catch (Exception ex) 
            {
                //return null;
            }
        }

        private string _selectedItem;
        public string SelectedItem
        {
            get { return _selectedItem; }
            set { _selectedItem = value; RaisePropertyChanged(() => SelectedItem); }
        }

        private string _caption = "sjdfsfkldj";
        public string Caption
        {
            get { return _caption; }
            set { _caption = value; RaisePropertyChanged(() => Caption); }
        }


        public ICommand ReportCommand
        {
            get { return new MvxCommand(() => ShowViewModel<OverviewViewModel>(new { param = SelectedPracticeItem })); }
        }

        public class Practices
        {
            public string ErrorMessage { get; set; }

            public List<string> Practice { get; set; }
        }

        #region Report List Properties

        private List<string> _reportItems;
        public List<string> ReportItems
        {
            get { return _reportItems; }
            set { _reportItems = value; RaisePropertyChanged(() => ReportItems); }
        }

        private string _selectedReportItem;
        public string SelectedReportItem
        {
            get { return _selectedReportItem; }
            set { _selectedReportItem = value; RaisePropertyChanged(() => SelectedReportItem); }
        }

        private ObservableCollection<string> _practiceItems;
        public ObservableCollection<string> PracticeItems
        {
            get { return _practiceItems; }
            set { _practiceItems = value; RaisePropertyChanged(() => PracticeItems); }
        }

        private string _selectedPracticeItem;
        public string SelectedPracticeItem
        {
            get { return _selectedPracticeItem; }
            set { _selectedPracticeItem = value; RaisePropertyChanged(() => SelectedPracticeItem); }
        }
    }

Я получил следующую ошибку -

MvxBind: Предупреждение: 17.62 Невозможно выполнить привязку: источник исходного свойства не найден. Свойство: Caption on String.


person SpaceApple    schedule 01.09.2014    source источник


Ответы (1)


Вам не нужно делать ничего дополнительно, чтобы открыть виртуальную машину для шаблонов. Передо мной есть некоторый код Andorid, который делает именно то, что вы делаете со счетчиком, и все в порядке.

MvxBind: Предупреждение: 17.62 Невозможно выполнить привязку: источник исходного свойства не найден. Свойство: PracticeItems on String.

Это предупреждение MvxBind говорит о том, что что-то не так с ViewModel в вашем представлении. Проверьте, для какой ViewModel установлено значение ViewModel.

person Pat Long - Munkii Yebee    schedule 01.09.2014
comment
Мои извинения, ошибка, которую я получаю, это Caption. Я обновил исходное сообщение об ошибке сообщения. Я все еще получаю сообщение об ошибке. - person SpaceApple; 01.09.2014
comment
Похоже, вы привязываетесь к списку строк, а не к списку объектов с Caption свойствами. Если вы хотите выполнить привязку ко всему объекту string, используйте период . для привязки всего объекта. - person Stuart; 01.09.2014
comment
@Stuart Связывание, которое я пытаюсь сделать, представляет собой строку ObservableCollection‹. Будет ли это то же самое, что и List‹строка› в этом примере? Я пытаюсь отказаться от использования списков из-за проблем с привязкой. - person SpaceApple; 01.09.2014
comment
В предупреждении говорится, что у привязки есть проблема с поиском Property:Caption on String, так что это не имеет ничего общего со списками. - person Stuart; 01.09.2014
comment
@Stuart - Спасибо, я решил это, используя список объектов, которые вы упомянули. :) - person SpaceApple; 01.09.2014