Привязка к свойству элемента из другого связанного списка - PullRequest
1 голос
/ 16 июня 2009

У меня есть список Проверка объектов - проверки.

public class Validation
{
       public IList<KeyValuePair<string, string>> Arguments
       { //(...) }
}

В форме есть список, привязанный к списку проверок, и DataGridView, привязанный к Аргументы список текущих Проверка из списка проверок. Я разрешаю пользователю редактировать выбранный Validation объект в диалоговом окне. Пользователь может изменить коллекцию Arguments . После закрытия окна элементы, отображаемые в DataGridView, должны обновиться. Они не Также, если список Аргументы пуст после редактирования, генерируется исключение IndexOutOfRangeException.

Как я могу заставить это работать?

1 Ответ

0 голосов
/ 16 июня 2009

Есть несколько важных интерфейсов для привязки данных; в частности, IBindingList, в котором есть событие ListChanged, которое DataGridView может прослушивать.

Можно ли изменить конкретный список на BindingList<T>? Что должно дать вам большую часть этого бесплатно? Вам не нужно менять тип возвращаемого значения, так как BindingList<T> : IList<T>, а DataGridView знает только об фактическом объекте (ему все равно, что вы называете его IList<T>).

Другой прагматичный вариант - просто сбросить привязку данных на DataGridView - возможно, установить DataSource на null и затем обратно:

object tmp = grid.DataSource;
grid.DataSource = null;
grid.DataSource = tmp; // low-tech data-source reset
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...