对DataTemplate进行验证(使用自定义ErrorTemplate)

时间:2010-04-05 20:03:28

标签: .net wpf validation datatemplate datacontext

我无法想象这个人/迫切需要帮助。

我有一个ItemsControl和一个DataTemplate作为ItemTemplate

<DataTemplate>
    <StackPanel>
       <TextBox Text={Binding Prop1}/>
       <TextBox Text={Binding Prop2}/>
    </StackPanel>
</DataTemplate>

我已经看到了很多将验证应用于单个绑定目标的示例(即仅分别验证每个文本框)。如果在使用<AdornedelementPlaceholder/>时出现任何错误(Prop1或Prop2),我希望对整个DataTemplate进行直观的更改,正如我在许多示例中看​​到的那样。

最重要的是,如果对象中代表DataTemplate的DataContext的任何项目有问题,有没有办法显示错误?

2 个答案:

答案 0 :(得分:2)

您可以为两个绑定定义自定义ErrorTemplates,它将StackPanel定义为Validation.ValidationAdornerSite。 这样,只要检测到错误,就可以装饰StackPanel而不是文本框。

有关详细信息,请参阅此链接: Vincent Sibal about validation with ValidationAdornerSite

答案 1 :(得分:1)

尝试在StackPanel上设置BindingGroup,如下所示,并在每个TextBox上设置单独的验证规则。我实际上没有尝试过,但它应该有用。

<StackPanel>
    <StackPanel.BindingGroup>
         <BindingGroup />
    </StackPanel.BindingGroup>

    <TextBox Text={Binding Prop1}/>
    <TextBox Text={Binding Prop2}/>
</StackPanel>