Поддержка редактирования в привязанном к данным специальном элементе управления

большинство привязанных к данным элементов

Представление данных фактически является односторонней привязкой данных — от источника данных к экрану. Большинство привязанных к данным элементов управления Windows Forms поддерживают некоторую форму двусторонней привязки, позволяя пользователю модифицировать значения в элементе управления, что непосредственно изменяет значения в нижележащей коллекции данных. Есть несколько различных уровней, к которым это может относиться. Как вы помните из главы 7, в интерфейсе IList Есть свойство IsReadOnly, Которое возвращает True, Если потребитель списка не должен его модифицировать. Смысл IsReadOnly Можно интерпретировать по-разному, поэтому интерфейс IBindingList Уточняет его, вводя свойства AllowEdit, AllowNew И AllowRemove, Чтобы явно указать, допускает ли коллекция соответственно редактирование отдельных своих элементов, добавление элементов или удаление элементов. Если вы хотите разработать элемент управления, допускающий редактирование представленных значений, вам потребуется использовать эти интерфейсы, чтобы решить, следует ли пытаться редактировать коллекцию, представленную вашим источником данных, и какого рода модификации вы должны разрешить. В качестве простого примера давайте внесем некоторые дополнения в BarChartControl И DataBoundBarChartControl, Чтобы позволить пользователям редактировать представленные значения в довольно грубой форме. А именно, конечный пользователь может щелкнуть не столбике левой кнопкой, чтобы увеличить его значение на 10 процентов, или правой кнопкой, чтобы уменьшить его на 10 процентов. Элемент управления будет разрешать эти операции только в том случае, если коллекция допускает редактирование, а если она реализует интерфейс IBindingList, То сообщает конкретно, что допускает редактирование содержащихся в ней значений.

Первым шагом для реализации этих функций будет модификация BarChartControl, Обеспечивающая описанную выше форму редактирования. Для этого потребуется добавить свойство, в зависимости от данных указывающее, будет ли созданный из них столбик редактируемым, и обработчик события, обнаруживающий и реагирующий на щелчки мышью, если элемент управления находится в редактируемом режиме. Требуется также способ передачи изменившихся значений обратно к инкапсулирующему элементу управления, который будет отвечать за их сброс в нижележащую коллекцию данных.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *