将datagrid模板列(作为datepicker列)绑定到数据表列

时间:2015-06-12 21:27:43

标签: c# wpf data-binding datatable datagridcolumn

我正在构建一个数据库访问程序,它可以动态创建datagrid列,并根据帐户首选项动态请求数据。我有几个数据网格以相同的方式工作,并且在大多数情况下它们完美地工作。我的所有文本列都绑定到用​​于存储所有数据的数据表,但是我无法弄清楚如何将模板列绑定到数据表列。我使用模板列作为datepicker列,如果这有用的话。

视觉效果正常加载:即列可以完美地加载,我可以看到并与它们进行交互而没有问题。主要问题是将它们绑定到数据表本身。任何帮助表示赞赏。请记住,datagrids始终存在,只有完全动态的列。

这是我所做的基本版本 (在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); 

1 个答案:

答案 0 :(得分:0)

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

必须在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);

我最终通过查看创建似乎成功绑定到数据源的数据模板列的代码示例来搞清楚这一点。我一直看到“绑定路径”,但我没有经过的搜索实际上描述了代码的那部分内容。

相关问题