2012-02-28 4 views
1

Вот сценарий. У меня есть текстовое поле в пользовательском интерфейсе, который связан с двойным свойством. Если в текстовом поле вводится символ, скажем, «#», проверки для WPF недостаточно для приложения. Мне нужно отобразить пользовательское сообщение, а также отключить некоторые элементы управления из кода. (Эти элементы управления, которые необходимо отключить, не являются частью xaml.) На данный момент единственным способом, который я мог бы сделать для этого, является привязка текстового поля к строковому свойству и использование метода TryParse. Однако это будет огромным неудобством. Есть ли способ получить уведомление о том, что введен неверный символ без изменения свойства в тип строки?Пользовательская обработка неправильных ввода символов

ответ

0

Хорошо, я использую «струнное» решение в своей модели просмотра. лучше работает с IDataErrorInfo и привязкой.

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

0

Если вы используете шаблон MVVM, то вы, вероятно, должны иметь свойство string в вашей модели ViewModel, поскольку это то, что вводится в текстовое поле. Даже если вам нужен двойной для вашей модели, у вас есть строка на вашем представлении. Затем вы можете выполнить любую проверку, необходимую для свойства string. Что-то вроде:

public string TextProperty 
{ 
    get 
    { 
     return _textProperty; 
    } 
    set 
    { 
     if (_textProperty != value) 
     { 
      _doubleProperty = this.TransformAndValidateString(value);    
      _textProperty = value; 
     } 
    } 
} 

Что касается инвалидизирующего управления, когда ошибка присутствует взгляд здесь:

IDataErrorInfo

+0

Неужели нет способа узнать в коде, что неправильное значение было введено? Что-то вроде прослушивания исключения, вызванного IDataErrorInfo? P.S. Извините, если вопросы слишком просты. Я начинающий. – Tulip

+0

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

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