【发布时间】:2009-03-25 18:12:34
【问题描述】:
我有一个绑定到 observablecollection 对象的数据网格。该集合可以是 Foo 的集合或 Bar 对象的集合。 Foo 和 Bar 具有不同数量的属性,因此数据网格中的列数应该不同。
因此,我在我的数据网格中动态创建列:
var cellEditTemplate = new StringBuilder();
cellEditTemplate.Append("<DataTemplate xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' >");
cellEditTemplate.Append(
"<CheckBox VerticalAlignment=\"Center\" IsThreeState=\"False\" IsChecked=\"{Binding ");
cellEditTemplate.Append(bindName);
cellEditTemplate.Append(", Mode=TwoWay}\"/>");
cellEditTemplate.Append("</DataTemplate> ");
var dataTemplate = ((DataTemplate) XamlReader.Load(cellEditTemplate.ToString()));
var column = new DataGridTemplateColumn
{
CellEditingTemplate = dataTemplate,
Header = title
};
grdCheckList.Columns.Add(column);
创建所有模板并将它们添加到 DataGrid 后,我将数据绑定到 DataGrid。正确的数据出现了。我的问题是当复选框被选中时我没有收到通知。
如果我添加
点击="CheckBox_Checked",
我收到以下错误:
Sys.InvalidOperationException:控件“sl_Main”中的 ManagedRuntimeError 错误 #4004:System.Windows.Markup.XamlParseException:AG_E_PARSER_BAD_PROPERTY_VALUE [行:1 位置:110] 在 MS.Internal.XcpImports.MethodEx(IntPtr ptr,字符串名称,CValue [] cvData) 在 MS.Internal.XcpImports.MethodEx(DependencyObject obj, String name) 在 MS.Internal.XcpImports.DataTemplate_LoadContent(DataTemplate 模板) 在 System.Windows.DataTemplate.LoadContent() 在 System.Windows.Controls.DataGrid。在 System.Windows.Controls.DataGrid.AddNewCellPrivate(DataGridRow 行,DataGridColumn 列) 在 System.Windows.Controls.DataGrid.CompleteCellsCollection(DataGridRow dataGridRow) 在 System.Windows.Controls.DataGrid.AddNewCellPrivate(DataGridRow 行,DataGridColumn 列) 的 PopulateCellContent(Boolean forceTemplating,Boolean isCellEdited,DataGridColumn dataGridColumn,DataGridRow dataGridRow,DataGridCell dataGridCell) .Windows.Controls.DataGrid.GenerateRow(Int32 rowIndex) 在 System.Windows.Controls.DataGrid.AddRows(Int32 rowIndex, Int32 rowCount) 在 System.Windows.Controls.DataGrid.RefreshR ows(Boolean recycleRows) at System.Windows.Controls.DataGrid.RefreshRowsAndColumns() at System.Windows.Controls.DataGrid.MeasureOverride(Size availableSize) at System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget, Single inWidth, Single inHeight, Single& outWidth, Single& outHeight)
有什么想法吗?
谢谢,
瑞克
【问题讨论】:
标签: silverlight