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

 

実行結果

 

 

Tagged:

製品について

Ultimate UI for WPF