Короче говоря
У меня есть пользовательская коллекция, которую я хотел бы показать и отредактировать (с помощью графического интерфейса), используя сетку данных.Первая часть - показ - работает.Второе - редактирование - не выполняется.
При первой попытке неэффективного редактирования (пользователем) я получаю исключение ошибки:
'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();
}
}