Reputation: 16803
I have the following UI, and it displays gender list when user clicks.
View.axml
<mvvmcross.droid.support.v7.appcompat.widget.MvxAppCompatSpinner
android:layout_width="80dp"
android:layout_height="match_parent"
local:MvxBind="ItemsSource GenderList; SelectedItem GenderCategory" />
However in the following corresponding ViewController
, no matter what user chooses, it always keep the initial value. For example if spinner shows Female
, even though user chooses Male
, it keeps showing Female
.
ViewController.cs
private List<string> _genderList = new List<string>() { "Female", "Male" };
public List<string> GenderList
{
get { return _genderList ; }
set { _genderList = value; RaisePropertyChanged(() => GenderList); }
}
public string GenderCategory
{
get
{
var a = Model.Persons.Where(x => x.PId("12").FirstOrDefault().Gender;
if (a.Equals(Constants.Category.Female))
{
return "Female";
}
else
{
return "Male";
}
}
set
{
if (value.Equals("Female"))
Model.SetGender(Constants.Category.Female, Person.Age);
else {
Model.SetGender(Constants.Category.Male, Person.Age);
}
RaisePropertyChanged(() => Gender);
}
}
Upvotes: 0
Views: 288
Reputation: 5192
You could try using the backing field to return the user's selected option:
string _genderCategory;
public string GenderCategory
{
get
{
return _genderCategory ?? GenderList.FirstOrDefault();
}
set
{
if (value.Equals("Female"))
Model.SetGender(Constants.Category.Female, Person.Age);
else
{
Model.SetGender(Constants.Category.Male, Person.Age);
}
RaisePropertyChanged(() => Gender);
_genderCategory = value;
}
}
Edited: to include a default select first gender option
Upvotes: 1