拥有 C++/CX 项目时,有没有办法为 CalendarDatePicker 设置默认日期?

When having a C++/CX project, is there a way to set the default Date for a CalendarDatePicker?

我有一个 C++/CX UWP 项目,希望用户从我使用 Windows.UI.Xaml.Controls 创建的 CalendarDatePicker 中选择一个日期。但是,在初始化时,我希望将 CalendarDatePicker 选择到特定日期(当前没有选择日期,它只是说 "select a date")。 我知道这在 C# 中很容易实现,而且我很确定 C++ 也有办法,但我还没有找到解决方案。

有人知道如何实现吗?

您可以将具体的日期传递给datePicker->Date。完整的步骤如下。 document解释了DateTime在C++中的相关使用/CX.So我们可以通过SYSTEMTIME->FILETIME->_ULARGE_INTEGER->DateTime获取DateTime。首先,我们使用COleDateTimeclass来解析特定的日期字符串(使用前包括ATLComTime.h)然后转换.

#include <ATLComTime.h>

//parse date string
COleDateTime coDT;
coDT.ParseDateTime(L"2012-11-10", 0, 0); 

//get system time struct​
SYSTEMTIME st;​
coDT.GetAsSystemTime(st);​
​
//COleDateTime is in local timezone, DateTime is in UTC, so we need to convert​
SYSTEMTIME st_utc;​
TzSpecificLocalTimeToSystemTime(nullptr, &st, &st_utc);​
​
//get filetime struct to get a time format compatible with DateTime​
FILETIME fileTime;​
SystemTimeToFileTime(&st_utc, &ft);​
​
//use _ULARGE_INTEGER to get a int64 to set the DateTime struct to​
_ULARGE_INTEGER ulint = { fileTime.dwLowDateTime, fileTime.dwHighDateTime };​
​
Windows::Foundation::DateTime myDateTime;​
wfdt.UniversalTime = ulint.QuadPart;​

//set date
MyDatePicker->Date = myDateTime;

我终于有更多时间来调查这个了。

解决此问题的更简单方法是使用以下代码:

Windows::Globalization::Calendar calendar;
Myguidatepicker->Date = calendar.GetDateTime();