带有DatePicker的DataGridTemplateColumn需要三次点击来编辑日期[英] DataGridTemplateColumn with DatePicker requires three clicks to edit the date

本文是小编为大家收集整理的关于带有DatePicker的DataGridTemplateColumn需要三次点击来编辑日期的处理方法,想解了带有DatePicker的DataGridTemplateColumn需要三次点击来编辑日期的问题怎么解决?带有DatePicker的DataGridTemplateColumn需要三次点击来编辑日期问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有一个 DataGridTemplateColumn.在它的 CellEditingTemplate 中,我放置了一个 DatePicker 控件.现在如果我想编辑日期,我必须点击三下才能让 DatePicker 开始编辑.有人可以让我知道如何让 DatePicker 只需单击两次即可进入编辑模式吗?此外,如果 DataGridTemplateColumn 获得焦点,键盘输入也不会将 DatePicker 置于编辑模式.如果能修复就好了.

推荐答案

你必须重写 DataGridTemplateColumn 中的 PrepareCellForEdit 如下:

public class DataGridDateColumn:DataGridTemplateColumn
{
    protected override object PrepareCellForEdit(FrameworkElement editingElement,
                                                 RoutedEventArgs editingEventArgs)
    {
        editingElement.MoveFocus(new TraversalRequest(FocusNavigationDirection.First));
        return base.PrepareCellForEdit(editingElement, editingEventArgs);
    } 
}

XAML

<Custom:DataGrid x:Name="dgData" SelectionUnit="Cell" AutoGenerateColumns="False" CanUserAddRows="False">
    <Custom:DataGrid.Columns>
        <Custom:DataGridTextColumn Binding="{Binding Subject}" Header="Subject" Width="*"/>
        <Custom:DataGridTextColumn Binding="{Binding RaisedBy}" Header="Raised By" Width="100"/>

        <DatePickerDGWPF:DataGridDateColumn Header="Raised On" Width="250">
            <DatePickerDGWPF:DataGridDateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding RaisedOn}" />
                </DataTemplate>
            </DatePickerDGWPF:DataGridDateColumn.CellTemplate>
            <DatePickerDGWPF:DataGridDateColumn.CellEditingTemplate>
                <DataTemplate>
                    <Custom:DatePicker SelectedDate="{Binding RaisedOn}"/>       
                </DataTemplate>
            </DatePickerDGWPF:DataGridDateColumn.CellEditingTemplate>
        </DatePickerDGWPF:DataGridDateColumn>
    </Custom:DataGrid.Columns>
</Custom:DataGrid>

本文地址:https://www.itbaoku.cn/post/1794101.html