繁体   English   中英

如何清除 UWP、C# 中的日历日期选择器选定值

[英]How to clear Calendar Date Picker Selected Values in UWP, C#

我有一个数据网格控件和一系列用于过滤该数据网格中数据的控件。

这些控件可以分为如下两个。

  • 过滤组合框(包含TodayYesterdayLast WeekLast Month
  • 两个日历日期选择器和一个按钮(它们是FromTo ,当我单击按钮时,事件会获取这些FromTo日期值的值并完成工作)

现在,我想做一些 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设置为日历日期选择器的日期值是无效的。 当我更改 combobox 时,如何清除这些值?

更新:要清除 CalendarDatePicker 的值,您可以将 Date 属性设置为 null,如下所示。

DatePicker_FromDate.Date = null;
DatePicker_ToDate.Date= null;

传值,先判断是否为null,再对其值进行运算。

string toDate= = DatePicker_ToDate.Date == null ? "" : DatePicker_ToDate.Date.Value.ToString("dd/MM/yyyy");

如果将Date属性设置为null ,则string也将为null :使用以下使用安全导航运算符 ( ?. ) 的代码:

var fromDate = DatePicker_FromDate.Date?.ToString("dd-MM-yyyy");
var toDate = DatePicker_ToDate.Date?.ToString("dd-MM-yyyy");

我想这就是你想要的。

另请注意,首先将DateTime转换为string只是为了将其转换回DateTime然后再次将其转换为string是没有意义的......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM