我有自定义集合,我想使用datagrid显示和编辑(GUI方式)。第一部分 - 展示 - 有效。第二个 - 编辑 - 没有。
首次尝试使用ineractive编辑(由用户),我得到错误异常:
'EditItem' is not allowed for this view.
表面上看,该集合似乎已准备好进行编辑,因此使用数据网格进行编辑的条件是什么?
我的自定义集合是bool的二维数组,实现了IEditableObject。我手动创建datagrid列,之后我将我的集合分配给datagrid的ItemSource。对于两列和整个数据网格的IsReadonly都设置为false。
void SetupDisplay()
{
ConnectionsGrid.BeginInit();
ConnectionsGrid.Columns.Clear();
int count = 0;
foreach (var conn in Connections)
{
var col = new DataGridCheckBoxColumn();
col.IsReadOnly = false;
col.Header = count == 0 ? "gr" : count.ToString();
col.Binding = new Binding(String.Format("[{0}]", count));
ConnectionsGrid.Columns.Add(col);
++count;
}
ConnectionsGrid.IsReadOnly = false;
ConnectionsGrid.EndInit();
ConnectionsGrid.ItemsSource = Connections;
UpdateDisplay();
}
void UpdateDisplay()
{
this.Dispatcher.BeginInvoke(DispatcherPriority.DataBind, doUpdateDisplay);
}
void doUpdateDisplay()
{
foreach (var row in Enumerable.Range(0, ConnectionsGrid.Items.Count))
{
ConnectionsGrid.GetRow(row).Header = row == 0 ? "gr" : row.ToString();
}
}