【问题标题】:Datagrid WPF: Bind datepicker in AutogeneratedColumnsDatagrid WPF:在 AutogeneratedColumns 中绑定日期选择器
【发布时间】:2012-10-24 04:13:43
【问题描述】:

我有自动生成的列 datagridgrid。这是我定义数据网格的 xml 代码:

<DataGrid AutoGenerateColumns="True"  HorizontalAlignment="Stretch"  Name="dataGrid1" VerticalAlignment="Stretch"  
              AutoGeneratingColumn="dataGrid1_AutoGeneratingColumn">

现在,我正在扫描每一列,如果列类型等于 System.DateTime,我想添加一个日期选择器,其选定值等于单元格中的值:

private void dataGrid1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
    {
        // Modify the header of the Name column.
        if (e.PropertyType.ToString() == "System.DateTime")
        {
    e.Column = new System.Windows.Controls.DatePicker();
     }

    }

但是当我这样做时,我得到了这个错误: Cannot implicitly convert type 'System.Windows.Controls.DatePicker' to 'System.Windows.Controls.DataGridColumn' 任何想法如何解决这个问题? 提前致谢。

【问题讨论】:

    标签: c# wpf datagrid datepicker autogeneratecolumn


    【解决方案1】:

    您可以有 2 个 DataTemplates:

    <DataTemplate x:Key="dueDateCellTemplate">
                <TextBlock
                Text="{Binding DueDate}"
                Margin="5,4,5,4" />
    </DataTemplate>
    <DataTemplate x:Key="dueDateCellEditingTemplate">
                <sdk:DatePicker 
                SelectedDate="{Binding DueDate, Mode=TwoWay}" />
    </DataTemplate>
    

    然后您可以像这样在检查时编辑您的列:

    private void dataGrid1_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
      {                
               if (e.PropertyName == "System.DateTime")
                {
                    // Create a new template column.
                    DataGridTemplateColumn templateColumn = new DataGridTemplateColumn();
                    templateColumn.CellTemplate = (DataTemplate)Resources["dueDateCellTemplate"];
                    templateColumn.CellEditingTemplate = (DataTemplate)Resources["dueDateCellEditingTemplate"];
                    e.Column = templateColumn;
                }            
      }
    

    【讨论】:

    • 感谢您的回复。如何将 Datepicker 绑定到 CellEditingTemplate ?然后将 SelectedDate 设置为单元格值?
    • 到目前为止还不行。单元格中没有值。但是当我点击单元格时,它会显示一个带有今天日期的日期选择器!
    • @dbaseman:我不知道如何实现,你能指导我吗?
    • 仍然不起作用,单元格为空。一旦我点击一个单元格,日期选择器就会出现,但是当我选择一个时间时,它会说:双向绑定需要路径或 xpath。
    猜你喜欢
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多