要通过WPF DataGrid编辑自定义集合,必须满足哪些条件?

时间:2011-01-14 13:20:33

标签: c# wpf datagrid

简而言之

我有自定义集合,我想使用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();
        }

    }

0 个答案:

没有答案