Xamarin Picker, не устанавливается значение по умолчанию - PullRequest
0 голосов
/ 13 февраля 2019

На экране есть средство выбора, которое имеет начальное значение, а также возможность изменить элемент в средстве выбора.

Пока мой selectedItem установлен, я не вижу, что в средстве выбора на экране для средства выбора не установлено значение, и только когда я выбираю значение, оно действительно отображает что-то в средстве выбора наэкран (в это время SelectedItem также обновляется с новым значением).

Мой xaml:

    <Picker
       ItemsSource="{Binding FeedbackTypes}"
       SelectedItem="{Binding SelectedFeedbackType, Mode=TwoWay}"
       ItemDisplayBinding="{Binding Name}">
   </Picker>

Мои свойства ViewModel:

private ValueName _selectedFeedbackType;

public ValueName SelectedFeedbackType
{
  get { return _selectedFeedbackType; }

  set
  {
    _selectedFeedbackType = value;
    OnPropertyChanged(nameof(SelectedFeedbackType));
  }
}

public ObservableCollection<ValueName> FeedbackTypes
{
  get
  {
    var feedbackTypes = new ObservableCollection<ValueName>();

    foreach (FeedbackType feedback in 
             Enum.GetValues(typeof(FeedbackType)))
    {
      feedbackTypes.Add(new ValueName
      {
        Value = feedback,
        Name = feedback.ToName()
       });
     }

   return feedbackTypes;
  }
}

И в моем конструкторе ViewModel я получил:

SelectedFeedbackType = new ValueName { Value = feedbackType, Name = feedbackType.ToName() };

Работающий конструктор правильно устанавливает SelectedFeedbackType, и если я не внесу никаких изменений в средство выбора, то это значение, которое я получу при отправке, однако по умолчанию я не вижу это значение в средстве выбора.Сборщик пуст, пока выбор не сделан.

Я также пытался привязать значение SelectedIndex к SelectedFeedbackType, однако, что не будет отображаться первоначально выбранное значение ни в средстве выбора.

1 Ответ

0 голосов
/ 14 февраля 2019

Вы можете попытаться установить значение по умолчанию для Xamarin Picker.Вы просто устанавливаете selectedIndex (первое число индекса 0) вашего средства выбора, как следующий код.

Mypicker.SelectedIndex=1;

Существует код демонстрации.

GIF демо при первом запуске.enter image description here

Вы можете скачать эту демонстрацию по ссылке.https://developer.xamarin.com/samples/xamarin-forms/UserInterface/PickerDemo/

Затем изменили код MonkeysPage.xaml.

 <Picker x:Name="Mypicker" Title="Baboon" ItemsSource="{Binding Monkeys}" ItemDisplayBinding="{Binding Name}" SelectedItem="{Binding SelectedMonkey}" />

Добавьте значение по умолчанию Picker в MonkeysPage.xaml.cs.

    public MonkeysPage()
    {
        InitializeComponent();
        BindingContext = new MonkeysPageViewModel();
        Mypicker.SelectedIndex=1;

    }
}
...