如何在公共文本块中显示所有验证错误消息

Abd*_*yar 5 c# validation wpf xaml

我是 WPF 新手,我正在尝试验证一些 WPF 控件,我一直在关注此链接WPF Binding Validations

我已经了解他们是如何做到的。但我想要的是有一个通用的文本块,显示所有控件的错误消息,在上面的链接中,他们为每个控件使用单独的文本块来查看错误消息,但我只想更改控件的边框颜色如果出现错误,则显示为红色,并在文本块中显示错误消息,该文本块是为了查看任何具有错误输入的文本框的错误消息而创建的。例如我有一个文本块

<TextBlock Name="txtError" Foreground="Red" Grid.ColumnSpan="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
Run Code Online (Sandbox Code Playgroud)

因此,每当任何文本框的文本发生更改并且验证规则返回 false 时,我希望该文本框的边框为红色,并且消息显示在上面的文本块中。

Maj*_*Dev 0

如果您使用 MVVM - 只需创建名为 errorMessage 的公共属性并将其绑定到此文本框:

private string _emailMessage;
public string emailMessage
{
    get
    {
        return _emailMessage;
    }
    set
    {
        _emailMessage = value;
        OnPropertyChanged(emailMessage);
    }
Run Code Online (Sandbox Code Playgroud)

现在在 xaml 中将 TextBlock.Text 绑定到此属性:

<TextBlock Text="{Binding Path="emailMessage"}  .../>
Run Code Online (Sandbox Code Playgroud)

如果您使用代码隐藏而不是 MVVM,您只需在每次发生错误时设置 Textblock.Text 即可。就像下面这样:

If(somethingBadHappened)
{
    txtError.Text = "Some error text";
}
Run Code Online (Sandbox Code Playgroud)