wpf验证:每个字段显示多个错误

时间:2019-11-18 15:41:12

标签: c# wpf

INotifyDataErrorInfo支持每个字段多个错误,这对我的应用程序很有用。
当要在UI上显示它们时,需要一种不与其他控件重叠的策略。 enter image description here

当前代码很简单:

    <TextBox Text="{Binding Path='Editing.Id', 
                    UpdateSourceTrigger=PropertyChanged, 
                    ValidatesOnNotifyDataErrors=True}">
        <Validation.ErrorTemplate>
            <ControlTemplate>
                <StackPanel>
                    <AdornedElementPlaceholder x:Name="textBox"/>
                    <ItemsControl ItemsSource="{Binding}">
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding ErrorContent}" Foreground="Red"/>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>
                </StackPanel>
            </ControlTemplate>
        </Validation.ErrorTemplate>
    </TextBox>

我想得到什么: enter image description here

也就是说,第一个错误总是被显示;这仅涵盖了一个验证异常的最常见情况。
如果存在多个错误,则会显示“其他错误”文本,然后单击该文本或将鼠标移到该文本上,您将得到其余的文本。
我正在寻找这个确切的解决方案,或者寻找从实现角度来看更干净的显示多个错误的任何替代解决方案。特别是,我希望仅实现xaml。

在这种实现方式中,我不知道如何处理代表第一项和后续项的不同方式。

我认为How to create a tooltip to display multiple validation errors for a single control?可以解决相同的问题,但是重点是特定的解决方案,这就是工具提示。 在这里,我想对这个普遍的且需要某种标准化方法的问题进行讨论,以讨论各种可用的解决方案。

0 个答案:

没有答案