Обмен привязки данных в коде - PullRequest
0 голосов
/ 25 марта 2010

У меня есть два текстовых поля с привязкой к данным. Один привязан к строке, а другой к числу. Связывание по умолчанию устанавливается в XAML. В некоторых случаях мне нужно изменить привязки во время выполнения (строка обычно является префиксом, но иногда это суффикс) В моей модели представления есть следующий код, вызываемый при загрузке окна:

Binding stringBinding = BindingOperations.GetBinding(view.seqLeft, TextBox.TextProperty);
Binding numberBinding = BindingOperations.GetBinding(view.seqRight, TextBox.TextProperty);
view.seqLeft.SetBinding(TextBlock.TextProperty, numberBinding);
view.seqRight.SetBinding(TextBlock.TextProperty, stringBinding);

После этого код загружает свойства, к которым относится привязка.

Проблема в том, что «новая» привязка не работает. Что я пропустил? Есть ли лучший способ?

Ответы [ 3 ]

2 голосов
/ 25 марта 2010

Я мог бы рассмотреть возможность предоставления строк Prefix и Suffix, с которыми может связываться View, а затем использовать логику в ViewModel или любой другой объект поддержки, который вы используете, чтобы соответствующим образом заполнить эти строки. Эта опция аккуратно отделяет деловую заботу от визуального и упрощает то, что вы должны отслеживать в своем представлении.

0 голосов
/ 25 марта 2010

Единственной ошибкой в ​​моем коде был текст Block .TextProperty в вызовах SetBinding! Конечно, это должен был быть текст Box .TextProperty, но я так долго с ним связывался, что не видел дрова для деревьев.

0 голосов
/ 25 марта 2010

Зачем вообще обезьяны с привязками? Если вы хотите иметь TextBox, привязанный к одной из двух разных вещей, создайте два TextBox, поместите их в одно и то же место и переключите их видимость в зависимости от того, какое у вас условие подкачки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...