Xamarin选择器,未设置默认值

时间:2019-02-13 15:09:53

标签: xaml xamarin xamarin.forms picker

我在屏幕上有一个选择器,它有一个初始值,以及在选择器中更改项目的选项。

虽然设置了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 :(得分:0)

您可以尝试设置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;

    }
}