MvxSpinner не е обвързващ

Така че трябваше да променя цвета на текста на моя MvxSpinner. Виждам, че не можете да промените цвета от xaml кода, така че трябваше да използвам шаблони за спинера. Но преди да използвах шаблони за spinner всичко се свързваше правилно с viewModel, сега изглежда, че не може да намери моите свойства в viewmodel, когато използвам шаблони. Има ли начин да изложите текущия модел на изглед към шаблоните?

По-долу са моите кодови сегменти, ако това помага

<?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)


Не трябва да правите нищо допълнително, за да изложите VM на шаблоните. Имам някакъв код на Andorid пред себе си, който прави точно това, което правите вие ​​със спинер и всичко е наред.

MvxBind:Предупреждение: 17.62 Не може да се обвърже: източникът на свойството източник не е намерен Property:PracticeItems на String

Това предупреждение на MvxBind казва, че нещо не е наред с ViewModel на вашия изглед. Проверете на какво е зададен ViewModel на изгледа

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