Xamarin Forms 选择器的默认值

Xamarin Forms Default value for Picker

我想在打开我的页面时获取第一个数据,但没有。我不知道我在哪里犯了错误。有人可以帮忙吗?

这是我的代码;

Xaml

<Picker FontSize="15"
        SelectedItem="{Binding SelectedObject}"
        VerticalOptions="StartAndExpand"
        HorizontalOptions="FillAndExpand"
        ItemsSource="{Binding myList}"
        ItemDisplayBinding="{Binding Title}">

视图模型


public myViewModel()
{
    GetList();
    SelectedObject = myList[0];
}



public myClass _selectedObject;

public myClass SelectedObject
{
    get
    {
        return _selectedObject;
    }
    set
    {
        _selectedObject= value;
        OnPropertyChanged("SelectedObject");

    }
}

Class

public class myClass
{
   public int ID { get; set; }

   public string Title{ get; set; }

   public string Desc{ get; set; }
}
<Picker.SelectedIndex>0</Picker.SelectedIndex>

SelectedIndex="{Binding Index}"

或交换属性顺序

<Picker FontSize="15"
    VerticalOptions="StartAndExpand"
    HorizontalOptions="FillAndExpand"
    ItemsSource="{Binding myList}"
    ItemDisplayBinding="{Binding Title}"
    SelectedItem="{Binding SelectedObject}>

我刚写了一个demo,我实现了,你可以看看,看看哪里错了:

在后面的代码中:

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();


        myViewModel vm = new myViewModel();
        this.BindingContext = vm;

        //This will also work
        //myPicker.SelectedIndex = 0;
    }
}

public class myViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public List<myClass> myList
    {
        get;
        set;
    }

    public myViewModel()
    {
        GetList();
        SelectedObject = myList[0];
    }

    public void GetList() {

        myList = new List<myClass>();

        myList.Add(new myClass(1,"firstTitle","FirstDesc"));
        myList.Add(new myClass(2, "SecondTitle", "SecondDesc"));
        myList.Add(new myClass(3, "ThirdTitle", "ThirdDesc"));

    }

    public myClass _selectedObject;


    public myClass SelectedObject
    {
        get
        {
            return _selectedObject;
        }
        set
        {
            _selectedObject = value;

            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("SelectedObject"));
        }
    }
}

public class myClass
{
    public int ID { get; set; }

    public string Title { get; set; }

    public string Desc { get; set; }

    public myClass(int a , string title , string desc) {

        ID = a;
        Title = title;
        Desc = desc;
    }
}

在Xaml中:

    <!-- Place new controls here -->
<Picker x:Name="myPicker" FontSize="15"
        BackgroundColor="Red"
    VerticalOptions="CenterAndExpand"
    HorizontalOptions="CenterAndExpand"
    ItemsSource="{Binding myList}"
    ItemDisplayBinding="{Binding Title}"
    SelectedItem="{Binding SelectedObject}"
        />

我上传我的样本here。让我知道它是否有效。