所以我需要更改MvxSpinner的文本颜色。我发现你无法改变xaml代码的颜色,所以我不得不为微调器使用模板。但是在我为spinner使用模板之前,所有内容都会与viewModel正确绑定,现在看来当我使用模板时它无法在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" />
视图模型
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无法绑定:源属性源不是 找到属性:字符串上的标题
答案 0 :(得分:2)
您不需要做任何额外的事情来将VM暴露给模板。我面前有一些Andorid代码正在完成你用旋转器做的事情,一切都很好。
MvxBind:警告:17.62无法绑定:源属性源不是 找到属性:字符串上的PracticeItems
MvxBind警告说您的视图上的ViewModel有问题。检查视图的ViewModel设置为
的内容