TimePicker

.NET Multi-platform App UI (.NET MAUI) TimePicker 会调用平台的时间选取器控件,并允许选择时间。

TimePicker 定义以下属性:

  • Time,类型为 TimeSpan,表示所选时间,其 TimeSpan 默认为 0。 TimeSpan 类型指示自午夜以来的持续时间。
  • Format,类型为 string,是标准或自定义 .NET 格式字符串,默认为“t”,即短时间模式。
  • TextColor,类型为 Color,用于显示所选时间的颜色。
  • FontAttributes,类型为 FontAttributes,默认为 FontAtributes.None
  • FontFamily,类型为 string,默认为 null
  • FontSize,类型为 double,默认为 -1.0。
  • CharacterSpacing,属于 double 类型,是 TimePicker 文本字符之间的间距。

所有这些属性都由 BindableProperty 对象提供支持,这意味着可以对它们进行样式设置,并且可以将它们用作数据绑定的目标。 Time 属性的默认绑定模式为 BindingMode.TwoWay,这意味着它可以是使用模型-视图-视图模型 (MVVM) 模式的应用程序中数据绑定的目标。

注意

TimePicker 不包括用于指示新选定的 Time 值的事件。 如果需要收到通知,可以为 PropertyChanged 事件添加事件处理程序。

创建 TimePicker

在 XAML 中指定 Time 属性时,将该值转换为 TimeSpan,并对其验证以确保毫秒数大于或等于 0,并且小时数小于 24。 时间分量应用冒号分隔:

<TimePicker Time="4:15:26" />

举例说明,如果将 TimePickerBindingContext 属性设置为包含名为 SelectedTime、类型为 TimeSpan 的属性的 viewmodel 实例,则可以按如下所示实例化 TimePicker

<TimePicker Time="{Binding SelectedTime}" />

在此示例中,Time 属性被初始化为 viewmodel 中的 SelectedTime 属性。 由于 Time 属性的绑定模式为 TwoWay,因此用户选择的任何新时间都会自动传播到 viewmodel。

在代码中,可以将 Time 属性初始化为 TimeSpan 类型的值:

TimePicker timePicker = new TimePicker
{
  Time = new TimeSpan(4, 15, 26) // Time set to "04:15:26"
};

有关设置字体属性的信息,请参阅字体

TimePicker 和布局

可以使用不受约束的水平布局选项,例如 CenterStart 或包含 TimePickerEnd

<TimePicker ···
            HorizontalOptions="Center" />

但是不建议这样做。 根据 Format 属性的设置,所选时间可能需要不同的显示宽度。 例如,“T”格式字符串会使 TimePicker 视图以长格式显示时间,而与“4:15 AM”的短时间格式(“t”)相比,“4:15:26 AM”需要更大的显示宽度。 根据平台的不同,这种差异可能会导致 TimePicker 视图在布局中更改宽度,或者导致显示被截断。

提示

最好将 Fill 的默认 HorizontalOptions 设置与 TimePicker 一起使用,并且在将 TimePicker 放入 Grid 单元格时不使用 Auto 的宽度。

平台差异

本部分介绍 TimePicker 控件的特定于平台的差异。

在 Android 上,控件会遵循并显示 Format 属性。 但是,如果通过按下控件来显示选取器控件,则只能更改小时、分钟和时间。