C# 无法将绑定添加到UWP DataGridTemplateColumn

C# 无法将绑定添加到UWP DataGridTemplateColumn,c#,xaml,uwp,datagrid,C#,Xaml,Uwp,Datagrid,我想将一些数据绑定到在代码隐藏中动态创建的列。它使用的是DataGridTextColumn,而不是DataGridTemplateColumn 由于DataGridTemplateColumn没有“Binding”属性,因此我创建了一个自定义列,该列根据一些解决方案的建议从DataGridTemplateColumn派生。但是,SetBinding在调用GenerateElement方法并使程序崩溃时抛出System.Exception 类DataGridBoundColumn:DataGri

我想将一些数据绑定到在代码隐藏中动态创建的列。它使用的是
DataGridTextColumn
,而不是
DataGridTemplateColumn

由于DataGridTemplateColumn没有“Binding”属性,因此我创建了一个自定义列,该列根据一些解决方案的建议从
DataGridTemplateColumn
派生。但是,
SetBinding
在调用GenerateElement方法并使程序崩溃时抛出System.Exception

类DataGridBoundColumn:DataGridTemplateColumn
{
公共绑定基绑定{get;set;}
受保护的覆盖框架元素GenerateDitingElement(DataGridCell单元格,对象dataItem)
{
var元素=base.GenerateEditingElement(单元格,数据项);
if(元素!=null&&Binding!=null)
元素。SetBinding(ContentPresenter.ContentProperty,绑定);
返回元素;
}
受保护的覆盖FrameworkElement GenerateElement(DataGridCell单元格、对象dataItem)
{
var元素=base.GenerateElement(单元格,数据项);
if(元素!=null&&Binding!=null)
element.SetBinding(ContentPresenter.ContentProperty,Binding);//此处有错误
返回元素;
}
}
用于创建列和填充网格的代码:

dataGrid.Columns.Add(newmodels.DataGridBoundColumn
{
Header=“Week”+Week.WeekNumber,
Binding=newbinding{Path=newpropertyPath(“[”+i.ToString()+“]”)号),
CellTemplate=(DataTemplate)资源[“templateCell”]
});
var collection=新的ObservableCollection();
列表=新列表(新字符串[]{“2”、“3”、“7”});
for(int i=0;i
目前我用于测试的
DataTemplate


我仔细查看了绑定类文档,但仍然不知道它为什么会抛出此异常

错误是:

灾难性故障(HRESULT异常:0x8000FFFF (E_)

在Windows.UI.Xaml.FrameworkElement.SetBinding(DependencyProperty dp, BindingBase(绑定)位于 Application.Models.DataGridBoundColumn.GenerateElement(DataGridCell C:…\Models\DataGridBoundColumn.cs:line中的单元格,对象数据项) 26在 Microsoft.Toolkit.Uwp.UI.Controls.DataGrid.PopulateCellContent(布尔值 isCellEdited、DataGridColumn、DataGridColumn、DataGridRow、DataGridRow、, DataGridCell(DataGridCell)位于 Microsoft.Toolkit.Uwp.UI.Controls.DataGrid.AddNewCellPrivate(DataGridRow 行、DataGridColumn列)位于 Microsoft.Toolkit.Uwp.UI.Controls.DataGrid.CompleteCellsCollection(DataGridRow dataGridRow)在 Microsoft.Toolkit.Uwp.UI.Controls.DataGrid.GenerateRow(Int32行索引, Int32插槽,对象数据上下文)位于 Microsoft.Toolkit.Uwp.UI.Controls.DataGrid.AddSlots(Int32 totalSlots) 位于Microsoft.Toolkit.Uwp.UI.Controls.DataGrid.RefreshRows(布尔值 循环行、布尔清除行)位于 Microsoft.Toolkit.Uwp.UI.Controls.DataGrid.RefreshRowsAndColumns(布尔值 净空区)在 Microsoft.Toolkit.Uwp.UI.Controls.DataGrid.MeasureOverride(大小 可用性(尺寸)


好的,它现在工作正常,很容易修复。问题是
Contentproperty
的用法不正确,因为我的StackPanel(在DataTemplate中)没有,它收到了这个错误。正确的属性是
DataContextProperty

类DataGridBoundColumn:DataGridTemplateColumn
{
公共绑定基绑定{get;set;}
受保护的覆盖框架元素GenerateDitingElement(DataGridCell单元格,对象dataItem)
{
var元素=base.GenerateEditingElement(单元格,数据项);
if(元素!=null&&Binding!=null)
SetBinding(ContentPresenter.DataContextProperty,绑定);
返回元素;
}
受保护的覆盖FrameworkElement GenerateElement(DataGridCell单元格、对象dataItem)
{
var元素=base.GenerateElement(单元格,数据项);
if(元素!=null&&Binding!=null)
SetBinding(ContentPresenter.DataContextProperty,绑定);
返回元素;
}
}

感谢Microsoft Q&A提供的@PeterFleischer-3316解决了此问题。

您能提供完整的异常消息吗?刚刚添加了完整的StackTraceTachanks。我用“灾难性失败”替换了“Défailance irrémédiable”,因为我相信这是正确的英文翻译,否则请重新编辑!这回答了你的问题吗?我之前看到过,我认为这不是同一个问题