簡體   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