2014-09-01 3 views
0

Так что мне нужно было изменить цвет текста моего MvxSpinner. Я вижу, вы не можете изменить цвет из кода xaml, поэтому мне пришлось использовать шаблоны для счетчика. Но прежде, чем я использовал шаблоны для spinner, все будет правильно связываться с viewModel, теперь кажется, что он не может найти мои свойства в области просмотра, когда я использую шаблоны. Есть ли способ открыть текущую модель представления шаблонов?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/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 Невозможно связаться: исходный источник собственности не найденных недвижимости: Надпись на строках

ответ

1

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

MvxBind: Внимание: 17,62 Невозможно связаться: исходный источник собственности не найдено недвижимости: PracticeItems строковых

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

+0

Мое извинение за ошибку, которую я получаю, является надпись. Я обновил исходное сообщение об ошибке сообщения. Я все еще получаю сообщение об ошибке. – SpaceApple

+2

Похоже, вы привязываетесь к списку строк, а не к списку объектов с свойствами 'Caption'. Если вы хотите привязываться ко всему объекту 'string', тогда используйте период'. 'Для привязки всего объекта. – Stuart

+0

@Stuart Связывание, которое я пытаюсь сделать, это ObservableCollection . Будет ли это соответствовать списку в этом примере? Я пытаюсь отойти от использования списков причин проблем с привязкой. – SpaceApple

Смежные вопросы