Приложение WPF с использованием MVVM. У меня есть TextBox
, чье свойство Text
связано со свойством decimal
модели представления. Это свойство представляет значение валюты. Я бы хотел, чтобы TextBox
отображал данные в валютном формате. Для этого я установил StringFormat
в "c" в Binding
. Это работает как ожидалось.
Проблема в том, что, если SourceUpdateTrigger
равно PropertyChanged
, когда пользователь начинает печатать, форматирование применяется после ввода первого символа, а курсор вставляется перед только что введенным символом. Это означает, что следующий символ будет введен перед первым, а не после. Если SourceUpdateTrigger
равно LostFocus
, то пользователь должен сместить фокус на другой элемент управления, прежде чем кнопка ОК будет включена, что происходит после проверки поля валюты.
Я надеялся обработать события GotFocus
и LostFocus
, получить ссылку на Binding
и изменить его свойство StringFormat
. У меня нет проблем с этим в отношении MVVM, потому что это чисто пользовательский интерфейс. Проблема в том, что возникло исключение, и мне сказали, что Binding
не может быть изменен после использования.
Я рассмотрел различные другие варианты, включая пользовательский конвертер. Это не сработало, потому что я не мог понять, как использовать ConverterParameter
, чтобы выставить свойство IsFocused
элемента управления для конвертера.
У кого-нибудь есть идеи?