MVVMCross中的Spinner问题

时间:2016-05-10 17:42:10

标签: c# xamarin mvvmcross

我有以下用户界面,并在用户点击时显示性别列表。

View.axml

<mvvmcross.droid.support.v7.appcompat.widget.MvxAppCompatSpinner
 android:layout_width="80dp"
 android:layout_height="match_parent"
 local:MvxBind="ItemsSource GenderList; SelectedItem GenderCategory" />

但是在以下相应的ViewController中,无论用户选择什么,它始终保持初始值。例如,如果微调器显示Female,即使用户选择Male,它也会显示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);
    }
}

1 个答案:

答案 0 :(得分:2)

您可以尝试使用支持字段返回用户选择的选项:

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;
    }
}

已编辑:包含默认选择第一个性别选项