DatePicker

.NET Multi-platform App UI (.NET MAUI) DatePicker 调用平台的日期选取器控件,并允许你选择日期。

DatePicker 定义了八个属性:

  • MinimumDate,类型为 DateTime,默认为 1900 年的第一天。
  • MaximumDate,类型为 DateTime,默认为 2100 年的最后一天。
  • Date,类型为 DateTime,是所选日期,默认值为 DateTime.Today
  • Format,类型为 string,是标准自定义 .NET 格式设置字符串,默认为“D”,即长日期模式。
  • TextColor,类型为 Color,用于显示所选日期的颜色。
  • FontAttributes 类型的 FontAttributes,默认为 FontAtributes.None
  • string 类型的 FontFamily,默认为 null
  • double 类型的 FontSize,默认为 -1.0。
  • CharacterSpacing,属于 double 类型,是 DatePicker 文本字符之间的间距。

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

警告

设置 MinimumDateMaximumDate 时,请确保 MinimumDate 始终小于或等于 MaximumDate。 否则,DatePicker 将引发异常。

DatePicker 将确保 Date 介于 MinimumDateMaximumDate 之间(包含端点值)。 如果 MinimumDateMaximumDate 设置为 Date 不在它们之间,则 DatePicker 将调整 Date 的值。

当用户选择一个日期时,DatePicker 将触发 DateSelected 事件。

创建 DatePicker

当在 XAML 中指定 DateTime 值时,XAML 分析程序使用 DateTime.Parse 方法和 CultureInfo.InvariantCulture 参数将字符串转换为 DateTime 值。 必须以精确的格式指定日期:两位数的月、两位数的日和四位数的年,以斜线分隔:

<DatePicker MinimumDate="01/01/2022"
            MaximumDate="12/31/2022"
            Date="06/21/2022" />

如果将 DatePickerBindingContext 属性设置为包含比如名为 MinDateMaxDateSelectedDate,类型为 DateTime 的属性的 viewmodel 实例,则可以按如下所示 DatePicker 进行实例化:

<DatePicker MinimumDate="{Binding MinDate}"
            MaximumDate="{Binding MaxDate}"
            Date="{Binding SelectedDate}" />

在此示例中,所有三个属性都初始化为 viewmodel 中相应的属性。 由于 Date 属性的绑定模式为 TwoWay,因此用户选择的任何新日期都会自动反映在 viewmodel 中。

如果 DatePicker 在其 Date 属性上不包含绑定,则你的应用应将处理程序附加到 DateSelected 事件,以便在用户选择新日期时得到通知。

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

DatePicker datePicker = new DatePicker
{
    MinimumDate = new DateTime(2018, 1, 1),
    MaximumDate = new DateTime(2018, 12, 31),
    Date = new DateTime(2018, 6, 21)
};

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

DatePicker 和布局

可以使用不受约束的水平布局选项,例如 CenterStartEndDatePicker

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

但是不建议这样做。 根据 Format 属性的设置,所选日期可能需要不同的显示宽度。 例如,“D”格式字符串导致 DateTime 以长格式显示日期,并且“Wednesday, September 12, 2018”需要比“Friday, May 4, 2018”更大的显示宽度。 根据平台的不同,这种差异可能会导致 DateTime 视图更改布局宽度,或导致显示被截断。

提示

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

本地化 Windows 上的 DatePicker

对于面向 Windows 的应用,确保 DatePicker 按照用户设置本地化的格式显示日期(包括选取器对话框中的月份和日期的名称)需要在项目的 Package.appxmanifest 文件中进行特定配置。 本地化程序包清单中的元素通过遵守用户区域设置的文化规范来改善用户体验。

本地化 <xref:Microsoft.Maui.Controls.DatePicker> 中的日期格式和字符串需要在 Package.appxmanifest 文件中声明支持的语言

请按照以下步骤配置 DatePicker 以在 Windows 上进行本地化:

  1. 找到“资源”部分。

    导航到项目的 Platforms\Windows 文件夹,在代码编辑器或 Visual Studio 中打开 Package.appxmanifest 文件。 如果使用 Visual Studio,请确保查看文件的原始 XML。 查找 <Resources> 部分,最初可能包括:

    <Resources>
        <Resource Language="x-generate" />
    </Resources>
    
  2. 指定支持的语言。

    对于你支持的每种语言,请将 <Resource Language="x-generate"> 替换为 <Resource /> 元素。 语言代码应采用 BCP-47 语言标记的形式,例如 en-US 表示英语(美国)、es-ES 表示西班牙语(西班牙)、fr-FR 表示法语(法国)或 de-DE 表示德语(德国)。 例如,若要添加对英语(美国)和西班牙语(西班牙)的支持,<Resources> 部分应按如下所示进行修改:

    <Resources>
        <Resource Language="en-US" />
        <Resource Language="es-ES" />
    </Resources>
    

此配置可确保 DatePicker 根据用户的区域设置显示日期格式、月份和日期,从而显著增强应用程序在不同地区的可用性和可访问性。

有关 .NET MAUI 应用中的本地化的详细信息,请参阅本地化