Какова альтернатива ASP.NET DataBind () в WPF? - PullRequest
2 голосов
/ 10 апреля 2011

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

1 Ответ

4 голосов
/ 10 апреля 2011

Не стоит думать о внедрении INotifyCollectionChanged в качестве обходного пути - это действительно хорошая практика в WPF.

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

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

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

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

...