Привязать выбранное средством выбора значение к свойству Xamarin.Формы

#xamarin.forms #picker

#xamarin.forms #средство выбора

Вопрос:

Как связать свойство с выбранным элементом средства выбора?

 var kmList = new List<string>();
kmList.Add("1");
kmList.Add("2");
kmList.Add("3");
kmList.Add("4");
kmList.Add("5");
kmList.Add("6");
kmList.Add("7");

var picker = new Picker { Title = "Select a km", TitleColor = Color.Red };
picker.ItemsSource = kmList;
  

Например, если я выбираю 7, то необходимо, чтобы это значение было доступно в переменной SelectedNumber:

     public class TodoItem
    {
        [PrimaryKey, AutoIncrement]
        public int ID { get; set; }
        public string Name { get; set; }
        public string SelectedNumber { get; set; }
    }
  

Результирующее значение из средства выбора необходимо сохранить в базе данных, но сначала мне нужно установить SelectedNumber значение с выбранным элементом средства выбора.

Ответ №1:

Вы можете привязать свойство выбранного элемента ViewModel к SelectedItem свойству средства выбора, вот так:

 public class Monkey
{
    public string Name { get; set; }
    public string Location { get; set; }
    public string Details { get; set; }
    public string ImageUrl { get; set; }
}

public class MonkeysViewModel
{
    public ObservableCollection<Monkey> Monkeys { get; set; }

    public Monkey SelectedMonkey { get; set; }
}

<Picker Title="Select a monkey"
    TitleColor="Red"
    ItemsSource="{Binding Monkeys}"
    ItemDisplayBinding="{Binding Name}"
    SelectedItem="{Binding SelectedMonkey}" />
  

Кроме того, вы можете прочитать больше об этом в Документах Microsoft.

Комментарии:

1. Я прочитал это несколько раз, но так и не смог понять, как это сделать на c#. класс Monkey понятен, класс MonkeysViewModel — я не понимаю, зачем это нужно, что отвечает за привязку данных из этого ItemsSource, ItemDisplayBinding или SelectedItem, Как привязать данные дальше с помощью C#?

Ответ №2:

Решено. На c # это выглядит следующим образом

 picker.SetBinding(Picker.SelectedItemProperty, "SelectedNumber");