Поддерживает ли Xamarin.Forms TimePicker поведение? - PullRequest
0 голосов
/ 24 июня 2018

В моем проекте Xamarin.Forms (с Prism, Android) я пытаюсь реализовать EventToCommandBehavior для DatePicker, а также TimePicker для передачи выбранных значений.XAML выглядит следующим образом:

            <DatePicker x:Name="DatePicker"
                        Format="D"
                        HorizontalOptions="CenterAndExpand"
                        Margin="60, 0, 60, 0">
                <DatePicker.Behaviors>
                    <b:EventToCommandBehavior EventName="DateSelected"
                                              Command="{Binding DateSelectedCommand}"
                                              EventArgsConverter="{StaticResource DateSelectedConv}"/>
                </DatePicker.Behaviors>
            </DatePicker>

            <TimePicker x:Name="TimePicker"
                        HorizontalOptions="CenterAndExpand"
                        Margin="60, 0, 60, 0">
                <TimePicker.Behaviors>
                    <b:EventToCommandBehavior EventName="TimeChanged"
                                              Command="{Binding TimeSelectedCommand}"
                                              EventArgsConverter="{StaticResource TimeSelectedConv}">

                    </b:EventToCommandBehavior>
                </TimePicker.Behaviors>
            </TimePicker>

В ViewModel этой страницы настроек у меня есть

    public ICommand DateSelectedCommand { get; set; }
    public ICommand TimeSelectedCommand { get; set; }

    private void NotifyDateSelected(DateTime date)
    {
        MessagingCenter.Send<SettingsPageViewModel, DateTime>(this, "dateChanged", date);
    }

    private void NotifyTimeSelected(TimeSpan timeSpan)
    {
        MessagingCenter.Send<SettingsPageViewModel, TimeSpan>(this, "timeChanged", timeSpan);
    }

Метод преобразования TimeSelectedConverter:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var eventArgs = value as TimeChangedEventArgs;
        if (eventArgs == null)
            throw new ArgumentException("Expected TimeChangedEventArgs as value", "value");

        return new TimeSpan(eventArgs.HourOfDay, eventArgs.Minute, 0);
    }

Модель просмотрапотребляющий OverviewPage подписывается так:

MessagingCenter.Subscribe<SettingsPageViewModel, DateTime>(this, "dateChanged",
            (settingsPageViewModel, date) =>
            {
                Update();
            });

MessagingCenter.Subscribe<SettingsPageViewModel, TimeSpan>(this, "timeChanged",
            (settingsPageViewModel, timeSpan) =>
            {
                Update();
            });

Это отлично работает с DatePicker.Однако, как только я добавляю EventToCommandBehavior в TimePicker, приложение вылетает.Может быть, TimePicker не поддерживает поведение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...