Я не розумію різні режими прив'язки даних у WPF, такі як:
- Односторонній
- Двосторонній
- Одного разу
- тощо ...
Що означає кожен із цих режимів?
Коли їх слід застосовувати?
Відповіді:
OneWay: Використовуйте це, коли ви хочете, щоб пов'язане властивість оновлювало інтерфейс користувача.TwoWay: Це має таку ж поведінку, як OneWayі в OneWayToSourceпоєднанні. Властивість bound оновить користувальницький інтерфейс, а зміни в користувацькому інтерфейсі оновлять пов’язану властивість (Ви могли б використовувати це з прикладом TextBoxабо a Checkbox).OneTime: Це має таку ж поведінку, OneWayщо і лише за одноразового оновлення користувальницького інтерфейсу. Це має бути вашим вибором за замовчуванням для прив'язки (з різних причин, про які я тут більше не писатиму), ви повинні використовувати інші типи прив'язок, лише якщо вам насправді потрібна додаткова функціональність.OneWayToSource: Це протилежне OneWayзмінам значення користувальницького інтерфейсу, оновлюючим властивість.Якщо ви нічого не вказали, поведінка буде залежати від елемента керування, який ви використовуєте.
Для отримання додаткової інформації див. BindingModeEnum на MSDN .
Прив'язка складається з двох сутностей:
Ціль має бути a DependencyObject(для прив'язки до роботи), а джерелом може бути або a, DependencyObjectабо він повинен мати якийсь механізм імітації системи прив'язки WPF щодо її зміни (реалізація INotifyPropetyChnagedінтерфейсу).
MVVM рекомендує, щоб проект ViewModel був вільний від будь-яких посилань, пов’язаних із View, і тому рекомендується використовувати INotifyPropertyChangedінтерфейс, щоб зробити об’єкт Source чутим за допомогою прив’язки WPF. Прив'язка відбувається між властивістю Source та властивістю Target (має бути a DependencyProperty). наприклад, TextPropertyз TextBoxкласу DataBound в (скажімо) UserNameвластивість моделі уявлення. WPF палітурка пропонує чотири типи палітурки. Пам'ятайте, прив'язка виконується на потоці інтерфейсу користувача, якщо не вказано інше, щоб вона працювала інакше.
UserName, це відобразиться у текстовому полі. Це є проміжною вартістю, оскільки система прив’язки стежить лише за джерелом змін.TextPropertyі UserNameвластивість залишатимуться синхронізованими та оновлюватимуть одне одне, якщо одне зміниться. Це найдорожче, оскільки система зв’язування повинна стежити за змінами обох сторін.TextProperty, UserNameвластивість прийме змінене значення. Це знову є проміжною вартістю, оскільки система прив’язки стежить лише за ціллю змін.Label, і TextBlockт.д.Якщо ви нічого не згадуєте, кожна цільова властивість має режим прив'язки за замовчуванням, пов'язаний із собою. Наприклад, TextPropertya TextBoxмає режим прив'язки за замовчуванням як TwoWay. Для TextPropertya TextBlockце один із шляхів.
Бажано вибрати правильний режим, оскільки це може допомогти зменшити затримку програми, особливо у випадках, коли у вас є велика кількість елементів керування в інтерфейсі користувача.
Докладніше про MVVM - ось стаття, написана мною.