c# - 如何在 UWP、C# 中清除日历日期选择器选定的值
问题描述
我有一个数据网格控件和一系列用于过滤该数据网格中数据的控件。
这些控件可以分为如下两个。
- 过滤器组合框(包含
Today
,Yesterday
,Last Week
,Last Month
) - 两个日历日期选择器和一个按钮(它们是
From
和To
,当我单击按钮时,事件获取这些值From
和To
日期值并完成工作)
现在,我想做一些 UX 工作,如下所示。
- 当过滤器组合框的选择项改变时,两个日历日期选择器的值被清除。
- 单击按钮时,过滤器组合框的选定项被清除并设置回其原始占位符文本。
我可以管理它适用于要求 2,但 1 进展不顺利。下面是我的事件处理程序。我没有使用 MVVM。只是代码隐藏。
private void SelectionChanged_Filter(object sender, SelectionChangedEventArgs e)
{
/*DatePicker_FromDate.ClearValue(CalendarDatePicker.DateProperty);
DatePicker_FromDate.PlaceholderText = "Pick a Date";
DatePicker_ToDate.ClearValue(CalendarDatePicker.DateProperty);
DatePicker_ToDate.PlaceholderText = "Pick a Date";*/
DatePicker_FromDate.Date = null
DatePicker_ToDate.Date = null;
}
private void ButtonClick_Filter(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
// Clear the Filter Combobox's selected value
ComboBox_Filter.SelectedIndex = -1;
// EXCEPTION is in the below line:
var fromDate = Convert.ToDateTime(DatePicker_FromDate.Date.ToString()).ToString("dd-MM-yyyy");
var toDate = Convert.ToDateTime(DatePicker_ToDate.Date.ToString()).ToString("dd-MM-yyyy");
//...
}
例外是:
System.FormatException: 'String '' was not recognized as a valid DateTime.'
我认为设置null
为日历日期选择器的日期值是无效的。更改组合框时如何清除这些值?
解决方案
如果您将Date
属性设置为null
,string
也将是null
:使用以下使用安全导航运算符 ( ?.
) 的代码:
var fromDate = DatePicker_FromDate.Date?.ToString("dd-MM-yyyy");
var toDate = DatePicker_ToDate.Date?.ToString("dd-MM-yyyy");
我想这就是你想要的。
另请注意,首先将 a 转换DateTime
为 astring
只是将其转换回 aDateTime
然后再将其转换为 a 是没有意义的string
...
推荐阅读
- google-apps-script - 从远程 onedit 可安装触发器访问其他谷歌电子表格
- python - 在 pandas 中将行转换为列
- java - 为什么接受子类对象的方法不能通过超类的引用识别子类的对象?
- sql-server - 如何从 SQL Server 的表视图中获取最新日期
- kubernetes - 将环境变量传递给 zipkin helmchart
- port - 同源策略 Cypress,两个不同的端口
- azure - Azure Blob 存储视频不会搜索 - AWS S3 工作正常
- fusionauth - FusionAuth ElasticSearch 用于具有过期字段的用户
- linux - 全局初始化失败:FileNotOpen:无法打开“/var/log/mongodb/mongodb.log”
- powershell - Azure 管道:如何在条件中使用输出变量