Поймать исключения с IDataErrorInfo - PullRequest
0 голосов
/ 28 июня 2019

Я хочу проверить ввод TextBox.Я использовал интерфейс IDataErrorInfo для этого.Если пользовательский ввод неправильный, свойство ValueIsValid имеет значение false.Тем не менее, я использую свойство InputValue для TextInput (его int).Когда пользователь вводит «1234», интерфейс IDataErrorInfo проверяет правильность ввода и при необходимости устанавливает ValueIsValid в значение false.Но когда пользователь вводит «blabla», входные данные не преобразуются в int, а интерфейс IDataErrorInfo не вызывается => ValueIsValid не устанавливается в false.Как установить для ValueIsValid значение false, когда пользователь вводит «blabla» в TextBox?Я не могу получить доступ к свойству validation.hasError TextBox из моей модели представления, потому что я использую MVVM.

ViewModel:

public class ViewModel : IDataErrorInfo
{
    public bool ValueIsValid { get; set; }

    public string StrErrorMessage
    {
        get { return "Some Error ..."; }
    }

    public int InputValue
    {
        get { return m_inputValue; }
        set
        {
            m_inputValue = value;
            NotifyPropertyChanged();
            ValueIsValid = true;
        }
    }

    protected int m_inputValue;

    public string Error
    {
        get { return null; }
    }

    public string this[string columnName]
    {
        get
        {
            if (columnName == "InputValue")
            {
                if (InputValue == 10)
                {
                    ValueIsValid = false;
                    return "Wrong value in TextBox.";
                }
            }

            return string.Empty;
        }
    }
}

WPF

<TextBox Text="{Binding InputValue, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}">
    <TextBox.Style>
        <Style TargetType="TextBox">
            <Style.Triggers>
                <Trigger Property="Validation.HasError" Value="True">
                    <Setter Property="ToolTip" Value="{Binding StrErrorMessage}"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...