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 オブジェクトが取得できませんでした。");
}
}
実行結果
