Страницы

Поиск по вопросам

вторник, 23 апреля 2019 г.

Как связать TextBox.Text с свойством другого объекта (binding)

Мне нужно в одном TextBox связать его свйоство Text с одним свойством из Settings. Т.е. при изменении TextBox.Text должно меняться поле в Settings и наоборот. Знаю точно что можно при помощи Binding'а сделать, однако... похоже настолько туп, что не могу найти элементарный гайд по байндингу. Пожалуйста, напишите простейший пример на основе моей задачи, только без наворотов, что-бы понять можно было даже мне :)


Ответ

Всё просто.
Если пространство имён по умолчанию вашего приложения — MyApp, ваши настройки обычно находятся в пространстве имён MyApp.Settings. Вам по идее нужен объект MyApp.Settings.Default. Пускай свойство называется NumberOfDragons. Тогда делаем вот как:

Что это означает?
Мы определили пространство имён settings для XAML, чтобы оно ссылалось туда, где лежат ваши Settings Мы в Binding'е указали объект, к которому происходит привязка: Source={x:Static settings:Settings.Default}. Это означает, что мы вызываем статический метод Settings.Default, и работаем с тем, что получили из него. (Source задаёт объект, к свойству которого мы привязываемся.) Указываем само свойство: Path=NumberOfDragons. (Path задаёт свойство объекта, к которому мы привязываемся.)
Всё!
Не забудьте в конце работы приложения сказать Settings.Default.Save();

В принципе, вы выбрали не самый лёгкий объект для Binding'а. Обычно привязываются не к какому-то статическому объекту, а к DataContext, в этом случае вам не надо указывать Source, оно подразумевается.
Ну и имя параметра Path (только этого параметра!) можно не указывать:


По поводу всяких продвинутых параметров Binding, вот есть краткая сводка (на английском): Шпаргалка по WPF Binding

Комментариев нет:

Отправить комментарий