Как передать данные TimeSpan с использованием атрибутов свойств запроса с одной страницы XAML на другую страницу XAML? ⇐ 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))] Я действительно не знаю, как это решить. Я пытался активно искать в Интернете в течение нескольких дней, но пока не смог решить эту проблему.
Мне нужно, чтобы пользователь мог редактировать на второй странице время, отображаемое на первой.
Любая помощь? Спасибо.
Может быть, для некоторых из вас это может быть элементарной проблемой, но я действительно не могу решить 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))] Я действительно не знаю, как это решить. Я пытался активно искать в Интернете в течение нескольких дней, но пока не смог решить эту проблему.
Мне нужно, чтобы пользователь мог редактировать на второй странице время, отображаемое на первой.
Любая помощь? Спасибо.
Мобильная версия