行事曆日期選擇器

行事曆日期選擇器是一種下拉式控制項,最適合用來從行事曆檢視中挑選單一日期,然後取得各種重要的相關資訊,例如星期幾、行事曆行程密度。 您可以修改行事曆以提供其他內容,或限制可用的日期。

這是正確的控制項嗎?

使用行事曆日期選擇器,讓使用者從關係型行事曆檢視中挑選單一日期。 使用它來選擇約會或出發日期等事情。

使用日期選擇器讓用戶挑選已知的日期,例如出生日期,其中行事曆的內容並不重要。

如需如何選擇正確文字控制項的詳細資訊,請參閱日期和時間控制項文章。

範例

如果尚未設定日期,入口點將顯示佔位符文字; 否則,它顯示所選日期。 當使用者選取進入點時,行事曆檢視會展開供用戶選取日期。 行事曆檢視覆蓋其他 UI;它不會妨礙其他用戶介面。

Screenshot of a Calendar Date Picker showing an empty select a date text box and then one populated with a calendar beneath it.

UWP 和 WinUI 2

重要

本文中的資訊和範例針對使用 Windows App SDKWinUI 3 的應用程式進行了最佳化,但通常適用於使用 WinUI 2 的 UWP 應用程式。 如需平台特定資訊和範例,請參閱 UWP API 參考。

本節包含您在 UWP 或 WinUI 2 應用程式中使用控制項所需的資訊。

此控制項的 API 位在 Windows.UI.Xaml.Controls 命名空間中。

建議使用最新的 WinUI 2 來取得所有控制項的最新樣式和範本。 WinUI 2.2 或更新版本包含此使用圓角之控制項的新範本。 如需詳細資訊,請參閱圓角半徑

建立行事曆日期選擇器

WinUI 3 資源庫應用程式包含大多數 WinUI 3 控制項和功能的互動式範例。 從 Microsoft Store 取得應用程式,或在 GitHub 上取得原始程式碼

<CalendarDatePicker x:Name="arrivalCalendarDatePicker" Header="Calendar"/>
CalendarDatePicker arrivalCalendarDatePicker = new CalendarDatePicker();
arrivalCalendarDatePicker.Header = "Calendar";

產生的行事曆日期選擇器看起來像這樣:

Screenshot of a populated Calendar Date Picker with a label that says Calendar.

行事曆日期選擇器具有內部 CalendarView 來挑選日期。 CalendarDatePicker 上有一部分 CalendarView 屬性,例如 IsTodayHighlightedFirstDayOfWeek,並且會轉送至內部 CalendarView,讓您修改它。

不過,您無法變更 內部 CalendarView 的 SelectionMode 以允許多重選取。 如果需要讓使用者選擇多個日期或需要行事曆始終可見,請考慮使用行事曆檢視而不是行事曆日期選取器。 如需如何修改行事曆顯示的詳細資訊,請參閱行事歷檢視一文。

選取日期

使用 Date 屬性來取得或設定選取的日期。 根據預設,Date 屬性為 Null。 當使用者在行事曆檢視中選取日期時,就會更新此屬性。 使用者可以按下行事歷檢視中的選取日期來取消選取日期,以清除日期。

您可以在程式代碼中設定日期,如下所示。

myCalendarDatePicker.Date = new DateTime(1977, 1, 5);

當您在程式代碼中設定 Date 時,此值會受到 MinDateMaxDate 屬性的限制。

  • 如果 Date 小於 MinDate,則值會設定為 MinDate
  • 如果 Date 大於 MaxDate,則值會設定為 MaxDate

您可以處理 DateChanged 事件,以在 Date 值變更時收到通知。

注意

注意如需有關日期值的重要資訊,請參閱日期和時間控制項文章中的 DateTime 與 Calendar 值

設定標題和占位符文本

您可以新增 Header (或標籤) 與 PlaceholderText (或浮水印) 至行事曆日期選擇器,以向使用者指示其用途。 若要自訂標頭的外觀,您可以設定 HeaderTemplate 屬性,而不是 Header。

預設預留位置文字為「選取日期」。 您可以將 PlaceholderText 屬性設定為空字串,也可以提供自訂文字,如下所示。

<CalendarDatePicker x:Name="arrivalCalendarDatePicker" Header="Arrival date"
                    PlaceholderText="Choose your arrival date"/>

取得範例程式碼