Validation.HasError прикрепленное свойство - PullRequest
6 голосов
/ 16 мая 2010

Я что-то пропустил?

1- Стиль

 <Style TargetType="{x:Type TextBox}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=Validation.HasError}" Value="true">
                <Setter Property="BorderBrush" Value="Blue" />
            </DataTrigger>
        </Style.Triggers>
        <Setter Property="MinWidth" Value="160" />
        <Setter Property="Margin" Value="0 7 0 0"/>
    </Style>

2 - Viewmodel реализует IDataErrorInfo 3- текстовое поле зрения

 <TextBox x:Name="FirstName" Text="{Binding Person.FirstName,  UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=true}"></TextBox>

3 - я использую Caliburn MVVM

Я получил сообщение об ошибке пути BindingExpression: свойство 'Validation' не найдено для объекта '' 'PersonWindowViewModel' (HashCode = 38783181) '. BindingExpression: Path = Validation.HasError; DataItem =' PersonWindowViewModel '(HashCode = 38783181); Целевым элементом является «TextBox» (Name = «FirstName»); целевым свойством является «NoTarget» (тип «Object») »S

1 Ответ

14 голосов
/ 16 мая 2010

Ознакомьтесь с статьей Бет Масси о внедрении валидации здесь

По сути, вы использовали DataTrigger там, где вам просто нужно Trigger

Итак:

<Style.Triggers>
    <Trigger Property="Validation.HasError" Value="true">
        <Setter ... />
    </Trigger>
</Style.Triggers>
...