使用 MVVM CommunityToolkit 可视化控件上的 UI 验证错误

问题描述 投票:0回答:1

我正在尝试使用 CommunityToolkit 中的 ObservableValidator 来实现 UI 验证,以突出显示控件并在出现错误消息时显示它们。从文档中我只能找到如何实现 ViewModel 所需的属性,而不是 Xaml 部分本身,所以我认为它应该开箱即用。我已将问题分解为一个简单的可重现项目,这里是一些代码(这当然只是为了尽可能减少开销,并且只是一个展示我的问题的示例):

查看代码(MainWindow.xaml):

<Grid x:Name="root">
    <TextBox Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Height="70" Width="150"/>
</Grid>

隐藏代码(MainWindow.xaml.cs):

public sealed partial class MainWindow : Window
{
    public MainWindow()
    {
        this.InitializeComponent();
        root.DataContext = new ViewModel();
    }
}

public partial class ViewModel : ObservableValidator
{
    [ObservableProperty]
    [NotifyDataErrorInfo]
    [Required(ErrorMessage = "Username cannot be empty.")]
    [MinLength(2, ErrorMessage = "Provide more than 1 Character.")]
    private string _name;
}

这非常简单。我错过了什么,我想要的行为真的不受支持还是我误解了什么?非常感谢您的帮助。

c# xaml mvvm winui-3 community-toolkit-mvvm
1个回答
0
投票

您需要订阅

ErrorsChanged
:

public ViewModel()
{
    this.ErrorsChanged += ViewModel_ErrorsChanged;
}

private void ViewModel_ErrorsChanged(object? sender, DataErrorsChangedEventArgs e)
{
    if (this.HasError is true)
    {
    }
}

您应该查看MVVM Toolkit 示例应用程序。它有一些带有自定义控件ValidationTextBox的示例代码,它可以自行处理错误消息。

© www.soinside.com 2019 - 2024. All rights reserved.