作成日: 2019/07/02 最終更新日: 2019/08/30
文書種別
不具合
状況
修正済み
詳細
C1DatePickerで、DisplayModeプロパティにYear、AllowNullプロパティにtrueを設定した場合、入力値がnullの状態でドロップダウンカレンダーを表示すると、現在の日付の年月が選択された状態でカレンダーが開きます。この時、選択されている月をクリックしてドロップダウンカレンダーを閉じても、クリックした年月が選択されず、入力値がnullのままとなります。
回避方法
この問題は4.0.20192.660で修正されました。
※修正版を適用しない場合の回避方法は以下の通りです。
下記のように、ドロップダウンカレンダー上のクリック操作を追跡し、コーディングにより値を設定するようにします。
◆サンプルコード
----------------------------------------------------
private void c1DatePicker_CalendarOpened(object sender, RoutedEventArgs e)
{
var temp = (Calendar)((System.Windows.Controls.Primitives.Popup)((VisualTreeHelper.GetChild(c1DatePicker, 0) as Grid).Children[2] as FrameworkElement)).Child;
if (temp != null)
{
temp.PreviewMouseLeftButtonDown += Temp_PreviewMouseLeftButtonDown;
}
}
private void Temp_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
c1DatePicker.SelectedDate = new DateTime(c1DatePicker.DisplayDate.Year, c1DatePicker.DisplayDate.Month, 01);
}
----------------------------------------------------
※修正版を適用しない場合の回避方法は以下の通りです。
下記のように、ドロップダウンカレンダー上のクリック操作を追跡し、コーディングにより値を設定するようにします。
◆サンプルコード
----------------------------------------------------
private void c1DatePicker_CalendarOpened(object sender, RoutedEventArgs e)
{
var temp = (Calendar)((System.Windows.Controls.Primitives.Popup)((VisualTreeHelper.GetChild(c1DatePicker, 0) as Grid).Children[2] as FrameworkElement)).Child;
if (temp != null)
{
temp.PreviewMouseLeftButtonDown += Temp_PreviewMouseLeftButtonDown;
}
}
private void Temp_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
c1DatePicker.SelectedDate = new DateTime(c1DatePicker.DisplayDate.Year, c1DatePicker.DisplayDate.Month, 01);
}
----------------------------------------------------
旧文書番号
84178