WPF - MVVM - NHibernate Validation - PullRequest
       8

WPF - MVVM - NHibernate Validation

1 голос
/ 09 ноября 2009

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

Я использую NHibernate для украшения своей собственности на доменном объекте, как показано ниже.

private decimal _refurbishmentFee;
[Min(Value=0), NotNull]
public decimal RefurbishmentFee
{
    get { return _refurbishmentFee; }
    set 
    {
        if (_refurbishmentFee == value) return;
        _refurbishmentFee = value;
        OnPropertyChanged("RefurbishmentFee");
    }
}

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

Любая помощь?

Спасибо Фейсал

1 Ответ

1 голос
/ 10 ноября 2009

Да, я использую ValidatesOnDataErrors в XAML. К счастью, один из моих коллег решил эту проблему прошлой ночью, поэтому я решил поставить ее здесь на тот случай, если кто-то другой окажется в том же положении.

Чтобы проверка происходила во всех случаях, вам нужно добавить ValidatesOnExceptions = "True", а также ValidatesOnDataErrors = "True" в XAML.

<Controls:NumberTextBox IsEnabled="{Binding IsEditable}"  Grid.Row="1" Grid.Column="3" Name="txtRefurbishmentFee">
    <TextBox.Text>
        <Binding Path="Entity.RefurbishmentFee" UpdateSourceTrigger="PropertyChanged" ValidatesOnExceptions="True" ValidatesOnDataErrors="True" />
    </TextBox.Text>
</Controls:NumberTextBox>

Затем на объекте домена используйте стандартные валидаторы декорации NHibernate.

private decimal _refurbishmentFee;
[Min(Value=0)]
public decimal RefurbishmentFee
{
    get { return _refurbishmentFee; }
    set 
    {
        if (_refurbishmentFee == value) return;
        _refurbishmentFee = value;
        OnPropertyChanged("RefurbishmentFee");
    }
}

Спасибо, Фейсал

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...