Xamarin Forms Значение по умолчанию для сборщика - PullRequest
1 голос
/ 21 мая 2019

Я хочу получить первые данные при открытии моей страницы, но это не так. Я не знаю, где я сделал ошибку. Может кто-нибудь помочь?

Это мой код;

Xaml

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

ViewModel


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



public myClass _selectedObject;

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

    }
}

Класс * * +1011

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

   public string Title{ get; set; }

   public string Desc{ get; set; }
}

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

Я просто написал демо, и я заставил его работать, вы можете проверить его и выяснить, где вы допустили ошибку:

В коде:

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}"
        />

Я загружаю свой образец здесь .Дайте мне знать, если это работает.

0 голосов
/ 21 мая 2019
<Picker.SelectedIndex>0</Picker.SelectedIndex>

или

SelectedIndex="{Binding Index}"

или поменяйте порядок следования атрибутов

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