Какова альтернатива ASP.NET DataBind() в WPF?

Я являюсь разработчиком ASP.NET, но недавно также разработал приложения WPF. В ASP.NET, когда мне нужно было обновить данные в GridView, я просто вызываю DataBind(), Но какова альтернатива этому в WPF? В качестве обходного пути я в настоящее время реализовал INotifyCollectionChanged обновить данные.

1 ответ

Решение

Вы не должны думать о реализации INotifyCollectionChanged как обходной путь - это действительно хорошая практика в WPF.

(Обратите внимание, что вместо этого вы можете заполнить System.ComponentModel.BindingList. Элементы управления WPF, связанные с этим списком, будут автоматически обновляться при изменении списка.)

Так почему явное связывание данных является стандартной практикой в ​​ASP.NET, а шаблон наблюдателя используется в WPF? Это происходит из-за различной природы двух сред.

ASP.NET - все о создании и заполнении веб-страницы. Веб-страница не обновляется постепенно; когда пользователь выполняет обратную передачу, вся новая веб-страница воссоздается. Из-за этого эффективно использовать пакетный подход: собрать все данные, а затем сказать "ОК, данные готовы, заполнить элементы управления сейчас".

В приложении с расширенными возможностями элементы управления пользовательского интерфейса создаются один раз, но базовые данные изменяются в течение срока службы элементов управления. Если вы использовали явное связывание данных, при каждом изменении данных вы будете определять, какие элементы управления должны обновляться, а затем вызывать "DataBind" для каждого из них. Это головная боль обслуживания. Лучше, чтобы единственными компонентами, которые знают о привязке, были сами элементы управления. Данные могут просто объявить "Я изменился", и элементы управления могут обновлять себя по своему усмотрению.

Другие вопросы по тегам