Какие условия должны быть выполнены для редактирования пользовательской коллекции через WPF DataGrid? - PullRequest
2 голосов
/ 14 января 2011

Короче говоря

У меня есть пользовательская коллекция, которую я хотел бы показать и отредактировать (с помощью графического интерфейса), используя сетку данных.Первая часть - показ - работает.Второе - редактирование - не выполняется.

При первой попытке неэффективного редактирования (пользователем) я получаю исключение ошибки:

'EditItem' is not allowed for this view.

Внешне коллекция кажется готовой к редактированию, поэтому каковы условия редактирования с использованием сетки данных?

Подробности

Моя пользовательская коллекция представляет собой двумерный массив bool, реализующий IEditableObject.Я создаю столбцы таблицы данных вручную, и после этого я назначаю свою коллекцию 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();
        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...