Какова альтернатива 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" для каждого из них. Это головная боль обслуживания. Лучше, чтобы единственными компонентами, которые знают о привязке, были сами элементы управления. Данные могут просто объявить "Я изменился", и элементы управления могут обновлять себя по своему усмотрению.