Я следую следующему примеру, чтобы создать MasterDetailPage в формах Xamarin, и он работает нормально.
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/navigation/master-detail-page
Но я адаптировал каждую страницу для передачи 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>
ViewModel
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);
}
сразу после наилучшего способа сохранения данных между навигациями по страницам