我在屏幕上有一个选择器,它有一个初始值,以及在选择器中更改项目的选项。
虽然设置了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,但是无论如何在选择器中都不会显示最初选择的值。
答案 0 :(得分:0)
您可以尝试设置Xamarin Picker
的默认值。
您只需像下面的代码一样设置选择器的selectedIndex(索引的第一个数字为0)即可。
Mypicker.SelectedIndex=1;
有一个演示代码。
首次运行时,演示的您可以通过链接下载此演示。 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;
}
}