C# WPF材料设计文本框验证不起作用

xn1cxnb4  于 2023-03-13  发布在  C#
关注(0)|答案(1)|浏览(154)

我是C# WPF和材料设计的新手。我使用材料设计创建了一个注册页面,它有一个字段在登录时填充用户名。我希望对该文本框进行简单的必要验证,并且当字段数据不为空时,文本中的helperText应显示,否则错误消息应显示在下面的字段中,但错误始终是它在字段下面显示错误消息,即使我键入了一些文本为此我写了一些代码,这是我的杂乱的xml代码。

<StackPanel Grid.Column="1"
                        Grid.Row="4"
                        Orientation="Horizontal"
                        HorizontalAlignment="Center">
                <materialDesign:PackIcon Kind="Account"
                                         Opacity="0.8"
                                         Width="30"
                                         Height="30"/>
                <TextBox  x:Name="UsernameTextBox"
                          materialDesign:HintAssist.HelperText="Enter User Name."
                          materialDesign:HintAssist.Hint="Username"
                          Width="200"
                          Margin="10 0 0 0">
                    <TextBox.Text>
                        <Binding Path="Username"
                              UpdateSourceTrigger="PropertyChanged">
                            <Binding.ValidationRules>
                                <Validation:NotEmptyValidationRule
                                    ValidatesOnTargetUpdated="True"
                                    xmlns:Validation="clr-namespace:LibraryManagementSystem.BusinessLogicLayer.Validation" />
                            </Binding.ValidationRules>
                        </Binding>
                    </TextBox.Text>
                </TextBox>
            </StackPanel>

这是我的“NotEmptyValidationRule”后面的c#代码

private String userName;

        public String Username
        {
            get { return userName; }
            set { userName = value; }
        }

        public override ValidationResult Validate(object value, CultureInfo cultureInfo)
        {
            return string.IsNullOrWhiteSpace((value ?? "").ToString())
                ? new ValidationResult(false, "User Name is Required.")
                : ValidationResult.ValidResult;
        }

下面是我在项目中的文件夹管理

这是我的设计。

这里是错误:

当我执行项目LoginView用户名字段总是出现错误消息,即使我输入一些文本。我该如何修复?

vnjpjtjt

vnjpjtjt1#

您必须实现/使用INotifyPropertyChanged。您的示例包含以下内容:

private String userName;

public String Username
{
    get { return userName; }
    set { userName = value; }
}

因此您的视图不知道Username已经更改。

相关问题