Xamarin表示MasterDetailPage选择器在导航之间重置

时间:2018-05-30 09:25:22

标签: xamarin mvvm xamarin.forms master-detail picker

我按照以下示例创建了Xamarin表单中的MasterDetailPage,并且工作正常。

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>

视图模型

  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);

    }

在保存页面导航之间数据的最佳方法之后

1 个答案:

答案 0 :(得分:0)

您正在更新ItemsSource,当ItemsSource更新时,Picker会重置SelectedIndex / SelectedItem。