XamDataGrid の DateTimeField のカレンダーを開いたときに特定の月のカレンダーを表示させたい場合は、DateTimeField で使用されているエディター XamDateTimeEditor の DropDownOpened イベントを使って、表示させたい月の日付を XamDateTimeEditor の Value に設定します。
例えば受注日に応じて出荷予定日のドロップダウンのカレンダー月を設定する場合、参照先である「出荷予定日」列の DropDownOpened イベントで、参照元である「受注日」列の日付を取得し、任意の日付を用意して参照先「出荷予定日」列の Value に設定します。
<!-- MainWindow.xaml --> <igDP:XamDataGrid ...> <igDP:XamDataGrid.FieldLayouts> <igDP:FieldLayout> <igDP:FieldLayout.Fields> <igDP:DateTimeField Name="OrderDate" Label="受注日"/> <igDP:DateTimeField Name="ExpectedShippingDate" Label="出荷予定日"> <igDP:Field.Settings> <igDP:FieldSettings> <igDP:FieldSettings.EditorStyle> <Style TargetType="{x:Type igEditors:XamDateTimeEditor}"> <!-- DropDownOpened イベントでカレンダーの初期表示月を設定 --> <EventSetter Event="DropDownOpened" Handler="XamDateTimeEditor_DropDownOpened"/> </Style> </igDP:FieldSettings.EditorStyle> </igDP:FieldSettings> </igDP:Field.Settings> </igDP:DateTimeField> </igDP:FieldLayout.Fields> </igDP:FieldLayout> </igDP:XamDataGrid.FieldLayouts> </igDP:XamDataGrid>
// MainWindow.xaml.cs // 出荷予定日のカレンダーが開いた際に呼ばれるイベントハンドラー private void XamDateTimeEditor_DropDownOpened(object sender, RoutedEventArgs e) { ... (途中省略) ... var editor = sender as XamDateTimeEditor; // DataContext が DataRecord の場合、DataItem プロパティから Order を取得する if (editor.DataContext is Infragistics.Windows.DataPresenter.DataRecord dataRecord && dataRecord.DataItem is Order order) { DateTime orderDate = order.OrderDate; // エディターの Value を更新 editor.Value = orderDate; } else { System.Diagnostics.Debug.WriteLine("Order オブジェクトが取得できませんでした。"); } }
実行結果
