将数据网格模板列(作为日期选择器列)绑定到数据表列

Binding a datagrid template column (as datepicker column) to a datatable column

我正在构建一个数据库访问程序,它可以动态创建数据网格列,并根据帐户首选项动态请求数据。我有几个以相同方式工作的数据网格,并且在大多数情况下它们工作得很好。我所有的文本列都绑定到我用来存储所有数据的数据表,但是我不知道如何让我的模板列绑定到数据表列。我将模板列用作日期选择器列,如果有帮助的话。

视觉效果加载良好:即从我可以毫无问题地看到它们并与之交互的意义上来说,这些列加载完美。主要问题是将它们绑定到数据表本身。任何帮助表示赞赏。请记住,数据网格始终存在,只有列是完全动态的。

这是我所做的基本版本 (在 wpf 中)

<ResourceDictionary>
    <DataTemplate x:Key="datePickerTemplate">
        <DatePicker Text="{Binding}"/>                                      
    </DataTemplate>
</ResourceDictionary>

<DataGrid x:Name="datagrid_1" ItemsSource = "{Binding}" AutoGenerateColumns = "False">

(在 c# 中)

//creates a text column (works just fine)
DataGridTextColumn textcolumn = new DataGridTextColumn();
textcolumn.Header = "text column";
textcolumn.Binding = new Binding("bind test column"); //text columns bind fine          
datagrid_1.Columns.Add(setexpmeetdatecolumn); 

//create template column
DataGridTemplateColumn templatecolumn = new DataGridTemplateColumn();
templatecolumn.Header = "date template column";
templatecolumn.CellTemplate = (DataTemplate)FindResource("datePickerTemplate");
(problem -> ) templatecolumn.Binding = new Binding("bind test column"); //this is what I need to accomplish, but am not finding any legible answers that are coherent to understand.     

datagrid_1.Columns.Add(templatecolumn); 

好的,我明白了。事实证明,必须在创建模板模板的 wpf 代码中完成绑定。实际上不必在单个列的代码隐藏中发生绑定。 table 本身仍然必须指向其项目源,而不是列。

必须在 wpf 的模板中声明绑定路径,如下所示:

<ResourceDictionary>
    <DataTemplate x:Key="datePickerTemplate">
        <DatePicker Text="{Binding Path = bind test column}"/>                                      
    </DataTemplate>
</ResourceDictionary>

然后代码隐藏看起来像这样:

DataGridTemplateColumn templatecolumn = new DataGridTemplateColumn();
templatecolumn.Header = "date template column";
templatecolumn.CellTemplate = (DataTemplate)FindResource("datePickerTemplate");
datagrid_1.Columns.Add(templatecolumn);

我最终通过查看创建似乎成功绑定到数据源的数据模板列的代码示例来解决这个问题。我一直看到 "Binding Path",但我进行的搜索并没有真正描述这部分代码完成了什么。