Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Представление Xamarin.Forms , позволяющее пользователю выбрать время.
Вызывает Xamarin.FormsTimePicker элемент управления выбора времени платформы и позволяет пользователю выбрать время. TimePicker определяет следующие свойства:
TimeтипаTimeSpan, выбранное время, которое по умолчанию имеетTimeSpanзначение 0. ТипTimeSpanуказывает длительность времени с полуночи.Formatтипstring, стандартная или настраиваемая строка форматирования .NET, которая по умолчанию имеет значение t, короткий шаблон времени.TextColorтипColor, цвет, используемый для отображения выбранного времени, которое по умолчаниюColor.Default.FontAttributesтипFontAttributes, для которого по умолчанию используетсяFontAtributes.Noneзначение .FontFamilyтипstring, для которого по умолчанию используетсяnullзначение .FontSizeтипdouble, который по умолчанию соответствует -1.0.CharacterSpacingс типомdoubleпредставляет собой интервал между знаками текстаTimePicker.
Все эти свойства поддерживаются BindableProperty объектами, что означает, что их можно стильировать, а свойства могут быть целевыми объектами привязки данных. Свойство Time имеет режим BindingMode.TwoWayпривязки по умолчанию, что означает, что это может быть цель привязки данных в приложении, использующем архитектуру Model-View-ViewModel (MVVM).
Не TimePicker включает событие, указывающее новое выбранное Time значение. Если вам нужно уведомить об этом, можно добавить обработчик для PropertyChanged события.
Инициализация свойства Time
В коде можно инициализировать Time свойство в значение типа TimeSpan:
TimePicker timePicker = new TimePicker
{
Time = new TimeSpan(4, 15, 26) // Time set to "04:15:26"
};
Time При указании свойства в XAML значение преобразуется TimeSpan в и проверяется, чтобы число миллисекунд было больше или равно 0, а количество часов меньше 24. Компоненты времени должны быть разделены двоеточиями:
<TimePicker Time="4:15:26" />
BindingContext Если для свойства TimePicker задан экземпляр ViewModel, содержащий свойство типа TimeSpan с именем SelectedTime (например), можно создать TimePicker экземпляр следующим образом:
<TimePicker Time="{Binding SelectedTime}" />
В этом примере Time свойство инициализируется SelectedTime свойством в ViewModel. Time Так как свойство имеет режим TwoWayпривязки, любой новый раз, когда пользователь выбирает, автоматически распространяется на ViewModel.
TimePicker Если привязка для его Time свойства не содержится, приложение должно присоединить обработчик к PropertyChanged событию, чтобы получать сведения, когда пользователь выбирает новое время.
Сведения о настройке свойств шрифта см. в разделе "Шрифты".
TimePicker и макет
Можно использовать неограниченный горизонтальный макет, например Center, Startили End с TimePicker:
<TimePicker ···
HorizontalOptions="Center"
··· />
Однако это делать не рекомендуется. В зависимости от параметра Format свойства выбранные времена могут потребовать разных ширин отображения. Например, строка формата "T" приводит TimePicker к отображению времени в длинном формате, а "4:15:26" требует больше ширины отображения, чем короткий формат времени ("t") "4:15 AM". В зависимости от платформы это различие может привести TimePicker к изменению ширины представления в макете или усечения дисплея.
Совет
Рекомендуется использовать параметр по умолчанию HorizontalOptions и TimePickerне использовать ширину Auto при вводе TimePicker в ячейкуGrid.Fill
TimePicker в приложении
Пример включает в себя TimePickerEntryи Switch представления на своей странице. Можно TimePicker использовать для выбора времени и при появлении этого диалогового окна оповещения, которое напоминает пользователю текста в Entryтексте, если Switch он включен. Ниже приведен XAML-файл:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:SetTimer"
x:Class="SetTimer.MainPage">
<StackLayout>
...
<Entry x:Name="_entry"
Placeholder="Enter event to be reminded of" />
<Label Text="Select the time below to be reminded at." />
<TimePicker x:Name="_timePicker"
Time="11:00:00"
Format="T"
PropertyChanged="OnTimePickerPropertyChanged" />
<StackLayout Orientation="Horizontal">
<Label Text="Enable timer:" />
<Switch x:Name="_switch"
HorizontalOptions="EndAndExpand"
Toggled="OnSwitchToggled" />
</StackLayout>
</StackLayout>
</ContentPage>
Позволяет Entry ввести текст напоминания, который будет отображаться при выборе времени. Свойство TimePicker "T" назначается Format для длительного формата. Он имеет обработчик событий, подключенный к PropertyChanged событию, и Switch обработчик подключен к его Toggled событию. Эти обработчики событий находятся в файле программной части и вызывают SetTriggerTime метод:
public partial class MainPage : ContentPage
{
DateTime _triggerTime;
public MainPage()
{
InitializeComponent();
Device.StartTimer(TimeSpan.FromSeconds(1), OnTimerTick);
}
bool OnTimerTick()
{
if (_switch.IsToggled && DateTime.Now >= _triggerTime)
{
_switch.IsToggled = false;
DisplayAlert("Timer Alert", "The '" + _entry.Text + "' timer has elapsed", "OK");
}
return true;
}
void OnTimePickerPropertyChanged(object sender, PropertyChangedEventArgs args)
{
if (args.PropertyName == "Time")
{
SetTriggerTime();
}
}
void OnSwitchToggled(object sender, ToggledEventArgs args)
{
SetTriggerTime();
}
void SetTriggerTime()
{
if (_switch.IsToggled)
{
_triggerTime = DateTime.Today + _timePicker.Time;
if (_triggerTime < DateTime.Now)
{
_triggerTime += TimeSpan.FromDays(1);
}
}
}
}
Метод SetTriggerTime вычисляет время таймера на DateTime.Today основе значения свойства и TimeSpan значения, возвращаемого из объекта TimePicker. Это необходимо, так как DateTime.Today свойство возвращает текущую DateTime дату, но с временем полуночи. Если таймер уже прошел сегодня, то предполагается, что завтра будет.
Таймер тикает каждую секунду, выполняя OnTimerTick метод, который проверяет Switch , включен ли текущий момент времени больше или равно времени таймера. Когда происходит время таймера, DisplayAlert метод представляет диалоговое окно оповещения пользователю в качестве напоминания.
При первом запуске TimePicker примера представление инициализируется до 11 утра. Касание TimePicker вызывает средство выбора времени платформы. Платформы реализуют средство выбора времени очень разными способами, но каждый подход знаком пользователям этой платформы:
Совет
В Android диалоговое TimePicker окно можно настроить, переопределив CreateTimePickerDialog метод в пользовательском отрисовщике. Это позволяет, например, добавлять дополнительные кнопки в диалоговое окно.
После выбора времени выбранное время отображается в следующих TimePickerэлементах:
При условии, что Switch переключатель переключается на положение, приложение отображает диалоговое окно оповещения, напоминающее пользователю о тексте при Entry возникновении выбранного времени:
После отображения Switch диалогового окна генерации оповещений переключается на положение выключения.


