6

我错过了什么?

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 路径错误:在 'object' ''PersonWindowViewModel' (HashCode=38783181)' 上找不到 'Validation' 属性。BindingExpression:Path=Validation.HasError; DataItem='PersonWindowViewModel' (HashCode=38783181); 目标元素是'TextBox' (Name='FirstName'); 目标属性是 'NoTarget' (type 'Object')"S

4

1 回答 1

14

在此处查看 Beth Massi 关于实施验证的文章

基本上,你已经使用了一个DataTrigger你只需要一个Trigger

所以:

<Style.Triggers>
    <Trigger Property="Validation.HasError" Value="true">
        <Setter ... />
    </Trigger>
</Style.Triggers>
于 2010-05-16T08:04:22.793 回答