Datagrid не обновляется должным образом при удалении строки

Я работаю с сеткой данных в WPF, которая привязана к источнику представления коллекции. Источник представления привязан к наблюдаемой коллекции с именем Rows.

В сетке данных есть функции добавления и удаления, которые работают правильно, за исключением небольших проблем.

Вот изображения:

введите здесь описание изображения

В сетке данных больше данных, чем это. Каждый тест начинается с двух последовательностей (две строки, которые вы видите, относятся к одному тесту), и они сгруппированы и отсортированы по уникальному идентификатору.

введите здесь описание изображения

Я нажал красный «X», чтобы удалить строку. Теперь я нажму кнопку «Добавить», расположенную в левом верхнем углу изображения.

введите здесь описание изображения

Данные все еще там.

Это мои функции добавления и удаления:

private void Add(object sender, ExecutedRoutedEventArgs e)
        {
            var testRun = e.Parameter as TestRun;
            if (testRun != null)
            {
                var numberOfRows = testRun.Property.GetValue("numberOfRows").ToNullable<int>().GetValueOrDefault(2);
                numberOfRows++;
                testRun.Property.SetValue("numberOfRows", numberOfRows.ToString());
                this.Rows.Add(new ESCHandle(testRun, numberOfRows));
            }
        }

private void Delete(object sender, ExecutedRoutedEventArgs e)
    {
        var esc = e.Parameter as ESCHandle;
        if (esc != null)
        {
            this.Rows.Remove(esc);
            var numberOfRows = esc.TestRun.Property.GetValue("numberOfRows").ToNullable<int>().GetValueOrDefault(2);
            numberOfRows--;
            esc.TestRun.Property.SetValue("numberOfRows", numberOfRows.ToString());

        }
    }

Объект ESC правильно удаляется из наблюдаемой коллекции при удалении. Но когда я добавляю еще один объект/строку ESC в коллекцию и сетку данных, данные каким-то образом копируются в новый объект.


person ryan l    schedule 15.01.2015    source источник


Ответы (1)


Вы можете забыть вызвать метод обновления в сетке данных, чтобы обновить ее визуальные элементы, такие как строки.

Datagrid.Items.Refresh(), как описано здесь:

http://programmer.wrighton.org/2009/01/wpf-datagrid-items-refresh.html

Эта проблема может быть вызвана тем, что PropertyChange не вызывается должным образом.

person Community    schedule 15.01.2015