WPF如何使用INotifyDataErrorInfo在文本框旁边显示错误消息

时间:2014-09-16 07:04:48

标签: c# wpf

我是WPF新手,并开始遵循以下教程。

http://social.technet.microsoft.com/wiki/contents/articles/19490.validating-data-in-wpf-4-5-using-the-inotifyerrordataerror-interface.aspx#Visual_feedback

使用错误模板显示如下错误

<Validation.ErrorTemplate>

    <ControlTemplate>

        <StackPanel>

            <!-- Placeholder for the TextBox itself -->

            <AdornedElementPlaceholder x:Name="textBox"/>

            <ItemsControl ItemsSource="{Binding}">

                <ItemsControl.ItemTemplate>

                    <DataTemplate>

                        <TextBlock Text="{Binding ErrorContent}" Foreground="Red"/>

                    </DataTemplate>

                </ItemsControl.ItemTemplate>

            </ItemsControl>

        </StackPanel>

    </ControlTemplate>

</Validation.ErrorTemplate>

我得到了如何在教程中显示文本框正下方的错误消息。但是,我想在文本框旁边而不是在文本框下面显示错误消息。

有办法吗?我试图定义一个新的网格列,并尝试将StackPanel设置为在新网格上的位置,但它不起作用。 (Grid.Column似乎在那里没有效果)

1 个答案:

答案 0 :(得分:3)

您需要调整ErrorTemplate

<TextBox Text="{Binding Username, UpdateSourceTrigger=PropertyChanged, ValidatesOnNotifyDataErrors=True}">
    <Validation.ErrorTemplate>
        <ControlTemplate>

            <!-- Align text box and error list horizontally -->
            <StackPanel Orientation="Horizontal">

                <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>