我按照以下示例创建了Xamarin表单中的MasterDetailPage,并且工作正常。
但是我已经调整了每个页面以将ViewModel传入每个页面,因此它会跟踪更改等。
但每次我在页面之间点击时,选定的选择项似乎都会重置并抛出NULL异常。
以下是重置和错误的选择器的一个示例:
XAML
<Picker x:Name="appointmentDuration" HorizontalOptions="FillAndExpand" Title="Please select appointment length"
ItemsSource="{Binding AppointmentDurations, Mode=TwoWay}"
SelectedItem="{Binding AppointmentDurationIndex, Mode=TwoWay}">
</Picker>
视图模型
int? _appointmentdurationIndex;
public int? AppointmentDurationIndex
{
get
{
return _appointmentdurationIndex;
}
set
{
if (_appointmentdurationIndex != value)
{
_appointmentdurationIndex = value;
// trigger some action to take such as updating other labels or fields
var convertedMinutesCount = Double.Parse(value.ToString());
Contact.AttendanceDetails.EndDateTime = Contact.AttendanceDetails.EndDateTime.AddMinutes(convertedMinutesCount);
OnPropertyChanged("AppointmentDurationIndex");
}
}
}
数据类型
public ObservableRangeCollection<int?> AppointmentDurations { get; set; }
在OnAppearing页面中
protected async override void OnAppearing()
{
base.OnAppearing();
await viewModel.LoadAppointmentDurationsData(viewModel.Contact.Code);
}
在保存页面导航之间数据的最佳方法之后
答案 0 :(得分:0)
您正在更新ItemsSource,当ItemsSource更新时,Picker会重置SelectedIndex / SelectedItem。