Для моего приложения Xamarin Forms я использую средство выбора для выбора подкатегорий категории викторины.
<Picker x:Name="subCategory" Title="SUBCategory" ItemsSource="{Binding SubCategories}" ItemDisplayBinding="{Binding Subcategory}" SelectedItem="{Binding selSubCategories, Mode=TwoWay}" />
По умолчанию текст средства выбора - название SUBCategory, но я хочу изменить его на одноэлементов, которые я получаю из вызова API.
Сначала я загрузил ItemSource из представления и попытался установить SelectedItem, но безуспешно.
Затем я изменил егов ViewModel для загрузки данных и установки выбранного элемента на основе разных веб-сайтов.Элементы загружаются правильно из ViewModel, но с SelectedItem по-прежнему не удается.Я также попытался с SelectedIndex, который не работал, но я предпочитаю SelectedItem, потому что это значение, которое я получил буквально.
public class QuizPageViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
CheetahApi api = new CheetahApi();
public QuizPageViewModel()
{
GetSubCategories();
}
SubCategory countries =
new SubCategory() { Subcategory="Olympische Spelen"}
;
public SubCategory selSubCategories;
private ObservableCollection<SubCategory> _subCategories = new ObservableCollection<SubCategory>();
public ObservableCollection<SubCategory> SubCategories
{
get { return _subCategories; }
set
{
_subCategories = value;
OnPropertyChanged(nameof(SubCategories));
}
}
private async void GetSubCategories()
{
var subCat = await api.GetSubCategories("sport");
foreach (var sub in subCat)
{
SubCategories.Add(sub);
}
selSubCategories = subCat.FirstOrDefault(a => a.Subcategory == "Olympische Spelen");
}
protected virtual void OnPropertyChanged(string propertyName)
=> PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
Модель
public class SubCategory
{
public int Id { get; set; }
public string Category { get; set; }
public string Subcategory { get; set; }
}
Есть ли у кого-нибудьидея, как установить текст выбора по умолчанию для одного из элементов в источнике?