WPF组合框entlib验证问题

时间:2011-09-08 22:41:11

标签: c# wpf validation xaml enterprise-library

我正在使用entlib 5.0来验证我的表单。我在组合框控制方面遇到了一些问题:

<ComboBox Name="cmbRs" ItemsSource="{Binding PP.ListRs}" 
          SelectedValuePath="Id" DisplayMemberPath="Name" 
          SelectedValue="{Binding PP.R, ValidatesOnDataErrors=True,
          Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

PP类中通用列表的数据绑定工作正常。这是selectedValue的类属性(公共类PP:IDataErrorInfo,INotifyPropertyChanged):

[NotNullValidator(MessageTemplateResourceName="R", MessageTemplateResourceType=typeof(Messages))]
    public String R
    {
        get { return _R; }
        set { _R = value; OnPropertyChanged("R"); }
    }

问题是,当我从组合框中选择值时,错误指示符不会消失。设置属性R(从控制台可见),并启用提交按钮。

这是我表单的资源部分:

<eFINp:frmDialogBase.Resources>
    <ControlTemplate x:Key="ValidationErrorTemplate">
        <StackPanel Orientation="Horizontal">
            <TextBlock Foreground="Red" FontSize="24" Text="*" ToolTip="{Binding [0].ErrorContent}"/>
            <AdornedElementPlaceholder/>
        </StackPanel>
    </ControlTemplate>

    <Style TargetType="{x:Type TextBox}">
        <Setter Property="Validation.ErrorTemplate" Value="{StaticResource ValidationErrorTemplate}"/>
    </Style>
    <Style TargetType="{x:Type ComboBox}">
        <Setter Property="Validation.ErrorTemplate" Value="{StaticResource ValidationErrorTemplate}"/>
    </Style>
</eFINp:frmDialogBase.Resources>

文本框和传递框控件正常运行。

0 个答案:

没有答案