2009-07-15 2 views
1

Я пытаюсь связать текст combobox с свойством IsEditable, установленным в true. У меня есть свойство в моей модели просмотра, которая привязана к тексту.Проблема с привязкой к тексту текстового поля wpf

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

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

Это потому, что combobox доступен для редактирования, и он имеет текстовую каретку и фокусировку где-то в тексте combobox.

В принципе, я хочу, чтобы он обновился до предыдущего текста, когда я ограничил ввод текста в поле со списком во время редактирования. У любого есть идеи вернуть текст обратно к его старому значению через ViewModel. Заранее спасибо!

ответ

1

Спасибо за ваши ответы. Но я никогда не смог заставить его работать вместо этого, я создал свой собственный UserControl, который содержит текстовое поле, наложенное поверх выпадающего списка, и манипулировать этими двумя элементами управления для удовлетворения моих потребностей. Длинный путь для решения простой проблемы, но он работает в конце.

0

Является ли свойство viewmodel обязательным для создания как DependencyProperty? Вероятно, это проблема, с которой вы столкнулись. Two-way binding in WPF

Если вы не хотите создавать свойство Dependency, вам необходимо изменить INotifyProperty и вручную принудительно обновить его в событии, измененном Property.

+0

Я использовал свойство зависимости и изменил INotifyProperty. Оба не работали. Привязка к свойству Text в поле со списком - TwoWay. – 2009-07-15 22:40:21

+0

где вы делаете проверку ввода пользователей? –

+0

Я сделал это на обратном вызове onpropertychanged от dep prop И я сделал это в настройщике свойства text в модели представления, вызвав другой метод проверки текста. – 2009-07-15 23:28:45

0

Я думаю, что это из-за ошибки в WPF, не обновляющей пользовательский интерфейс, если вы измените значение свойства в сеттер. Вы можете обойти это, реализовав IdentityConverter, которые заставляют пользовательский интерфейс обновляться согласно this arcticle.

+0

Я пробовал то, что предлагалось здесь, но, к моему огорчению, он работает только тогда, когда контроль теряет фокус, как указано в статье. Это не то поведение, которое мне требуется. – 2009-07-15 23:29:33

Смежные вопросы