Установка textBox.Text не обновляет связанное двухстороннее свойство?

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


person djcouchycouch    schedule 13.07.2009    source источник


Ответы (3)


Я бы сказал, что нет смысла напрямую изменять привязанное свойство Text. Ваш код должен настраивать другой конец привязки и позволять привязке обновлять элемент управления.

Если связанный объект обновляется, когда установлено свойство Text, тогда потребуется специальный код случая, чтобы определить, когда такой назначенный объект является результатом изменения связанного объекта по другим причинам. Иначе получился бы бесконечный цикл.

person AnthonyWJones    schedule 13.07.2009
comment
Вопрос возникает из-за некоторой работы, которую я выполняю с программным добавлением / удалением привязок данных. Я обнаружил, что всякий раз, когда я устанавливаю привязку в коде, он устанавливает свойство, к которому я привязываюсь, и текстовое поле для пустых строк. Когда я снова устанавливаю привязку данных, я хочу, чтобы текст внутри текстового поля был установлен для свойства, а не наоборот. Почему я вообще удаляю привязку данных? Поскольку свойство постоянно обновляется, и я не хочу, чтобы текстовое поле меняло свой текст, когда оно находится в фокусе. - person djcouchycouch; 13.07.2009
comment
Возможно, вам следует включить эти детали, возможно, с небольшим кодом в сам вопрос. - person AnthonyWJones; 14.07.2009

Вы не должны устанавливать значение .Text текстового поля ... установите значение свойства, к которому оно привязано. :)

Я рекомендую вам больше узнать о методе Model-View-ViewModel для проектирования ваших представлений. При выполнении такой работы сохраняется четкое разделение проблем. Причина, по которой вы видите эту «ошибку» в отношении фокуса, вызывающего обновление привязки, заключается в том, что в большинстве случаев такие вещи неуместны.

Вот неплохое введение в MVVM: MVVM на канале 9

person Anderson Imes    schedule 13.07.2009

Это потому, что он фиксирует данные только тогда, когда текстовое поле теряет фокус. Здесь есть несколько связанный с этим вопрос.

person joshlrogers    schedule 13.07.2009