Я не понимаю различных режимов привязки данных в WPF, таких как:
- Одностороннее движение
- Двусторонний
- Один раз
- так далее...
Что означает каждый из этих режимов?
Когда их следует использовать?
wpf
data-binding
ДАТТ ОЗА
источник
источник
Привязка состоит из двух сущностей:
Цель должна быть
DependencyObject
(для работы привязки), а источником может быть либо a,DependencyObject
либо у нее должен быть какой-то механизм для имитации системы привязки WPF при ее изменении (реализацияINotifyPropetyChnaged
интерфейса).MVVM рекомендует, чтобы проект ViewModel был свободен от любых ссылок, связанных с представлением, и, следовательно, рекомендуется использовать
INotifyPropertyChanged
интерфейс, чтобы объект Source был слышен привязкой WPF. Связывание происходит между свойством Source и свойством Target (должно бытьDependencyProperty
). например,TextProperty
изTextBox
класса DataBound в (скажем)UserName
свойство модели представления. Привязка WPF предлагает четыре типа привязки. Помните, что привязка выполняется в потоке пользовательского интерфейса, если вы не укажете иное, чтобы она выполнялась иначе.UserName
свойство ViewwModel , оно отобразится в текстовом поле. Это имеет промежуточную стоимость, поскольку система привязки отслеживает изменения только Источника .TextProperty
иUserName
свойство будут синхронизироваться и будут обновлять друг друга при изменении. Это наиболее затратно, так как система крепления должна следить за изменениями с обеих сторон.TextProperty
,UserName
свойство примет измененное значение. Это опять же имеет промежуточную стоимость, поскольку система привязки отслеживает изменения только Target .Label
,TextBlock
и т. Д.Если вы ничего не упомянули, каждое целевое свойство имеет связанный с ним режим привязки по умолчанию. Например, для
TextProperty
объекта поTextBox
умолчанию используется режим привязки какTwoWay
. ДляTextProperty
семьиTextBlock
это один путь.Желательно, чтобы вы выбрали правильный режим, поскольку он может помочь вам уменьшить задержку приложения, особенно в тех случаях, когда у вас есть большое количество элементов управления в вашем пользовательском интерфейсе.
Подробнее о MVVM можно прочитать в статье, написанной мной.
источник