Как передать данные TimeSpan с использованием атрибутов свойств запроса с одной страницы XAML на другую страницу XAML?C#

Место общения программистов C#
Гость
Как передать данные TimeSpan с использованием атрибутов свойств запроса с одной страницы XAML на другую страницу XAML?

Сообщение Гость »


Может быть, для некоторых из вас это может быть элементарной проблемой, но я действительно не могу решить System.InvalidCastException: 'Недопустимое приведение из 'System.String' в 'System.TimeSpan'.< /п> У меня есть две страницы XAML, и мне нужно передать параметр TimeSpan с одной страницы на другую (чтобы я мог использовать TimePicker на другой странице).

Первая страница xaml:

и

пространство имен TestApp2.Views { [XamlCompilation(XamlCompilationOptions.Compile)] общедоступный частичный класс DateTimePage: ContentPage { общедоступная страница DateTimePage() { ИнициализироватьКомпонент(); BindingContext = новая DateTimePageViewModel (); } } } ViewModel за первой страницей:

с использованием системы; использование System.Collections.Generic; использование System.ComponentModel; использование System.Globalization; использование System.Text; использование TestApp2.Views; использование Xamarin.Forms; пространство имен TestApp2.ViewModels { открытый класс DateTimePageViewModel: BaseViewModel, INotifyPropertyChanged { общественная команда TimePickerTapped {get; } личное время TimeSpan; общедоступное время TimeSpan { получить => время; набор { время = ценность; ПриИзмененииСвойства(); } } общедоступная DateTimePageViewModel() { TimePickerTapped = новая команда (OnTimePickerSelected); время = новый TimeSpan (17, 0, 0); } асинхронная пустота OnTimePickerSelected() { если (время!= ноль) { await Shell.Current.GoToAsync($"{nameof(TransferDateTimePage)}?" + $"{nameof(TransferDateTimePageViewModel.Time)}={Time}"); } } } } Вторая страница XAML:

и

пространство имен TestApp2.Views { [XamlCompilation(XamlCompilationOptions.Compile)] общедоступный частичный класс TransferDateTimePage: ContentPage { общедоступная страница TransferDateTimePage() { ИнициализироватьКомпонент(); BindingContext = новый TransferDateTimePageViewModel (); } } } и модель представления за второй страницей:

с использованием системы; использование System.Collections.Generic; использование System.ComponentModel; использование System.Text; использование Xamarin.Forms; пространство имен TestApp2.ViewModels { [QueryProperty(имя(Время), имя(Время))] общедоступный класс TransferDateTimePageViewModel: BaseViewModel, INotifyPropertyChanged //, IQueryAttributable { личное время TimeSpan; общедоступное время TimeSpan { получить => время; набор { время = ценность; ПриИзмененииСвойства(); } } общедоступная TransferDateTimePageViewModel() { } } } Я думаю, эта ошибка как-то связана с

await Shell.Current.GoToAsync($"{nameof(TransferDateTimePage)}?" + $"{nameof(TransferDateTimePageViewModel.Time)}={Time}"); ViewModel за кодом первой страницы и передача параметра на вторую страницу:

[QueryProperty(nameof(Time), nameof(Time))] Я действительно не знаю, как это решить. Я пытался активно искать в Интернете в течение нескольких дней, но пока не смог решить эту проблему.

Мне нужно, чтобы пользователь мог редактировать на второй странице время, отображаемое на первой.

Любая помощь? Спасибо.

Вернуться в «C#»