Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何实现Wpf组合框验证_C#_Wpf - Fatal编程技术网

C# 如何实现Wpf组合框验证

C# 如何实现Wpf组合框验证,c#,wpf,C#,Wpf,在我的一个项目中,我需要在wpf应用程序的组合框中添加必需的字段验证。在我们的过程中,我们根据条件生成一个表单。生成表单并呈现所有控件后,我们需要为控件实现验证规则,如“必需”文本框,我需要检查此字段是否为空,并且在组合框上,验证将检查所选索引是否大于0索引 我正在搜索上述所有需求,但所有这些都给了我一个在xaml文件而不是代码文件中绑定和应用验证规则的示例 如何在文本框、组合框、列表框和复选框中应用所需的字段验证?这提供了C#示例代码。另外,回答可能会有所帮助。如果您不想使用绑定,您可以简单地

在我的一个项目中,我需要在wpf应用程序的组合框中添加必需的字段验证。在我们的过程中,我们根据条件生成一个表单。生成表单并呈现所有控件后,我们需要为控件实现验证规则,如“必需”文本框,我需要检查此字段是否为空,并且在组合框上,验证将检查所选索引是否大于0索引

我正在搜索上述所有需求,但所有这些都给了我一个在xaml文件而不是代码文件中绑定和应用验证规则的示例


如何在文本框、组合框、列表框和复选框中应用所需的字段验证?

这提供了C#示例代码。另外,回答可能会有所帮助。

如果您不想使用绑定,您可以简单地捕获LostFocus事件,并在那里实现您的验证规则。

您也可以在代码中设置绑定

1-创建一个新的验证规则类,如下所示

public class TextBoxEmptyRule : ValidationRule
{
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        ValidationResult vr = new ValidationResult(true,null);
        if (string.IsNullOrEmpty(value))
        {
            vr.ErrorContent = " Value can not be null!";
            vr.IsValid = false;
        }
        return vr;


    }
}
        TextBox txt = new TextBox();

        Binding b = new Binding("Your Path Here");

        b.Source = "Your Source Here";

        b.ValidationRules.Add(new TextBoxEmptyRule());

        txt.SetBinding(TextBox.TextProperty, b);
2-定义新文本框时,可以在运行时添加绑定,如下所示

public class TextBoxEmptyRule : ValidationRule
{
    public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
    {
        ValidationResult vr = new ValidationResult(true,null);
        if (string.IsNullOrEmpty(value))
        {
            vr.ErrorContent = " Value can not be null!";
            vr.IsValid = false;
        }
        return vr;


    }
}
        TextBox txt = new TextBox();

        Binding b = new Binding("Your Path Here");

        b.Source = "Your Source Here";

        b.ValidationRules.Add(new TextBoxEmptyRule());

        txt.SetBinding(TextBox.TextProperty, b);
3-您可以向绑定添加任意多个规则


4-可以为组合框添加相同的属性

谢谢您的回复,我需要先创建属性,然后将路径值分配给绑定类构造函数,然后再如何在运行时创建属性。@J S:您会提前知道数据源以及要分配的属性。作为您的建议,我的工作一切都很好,但是我只缺少一件事,我需要为每个控件创建一个属性,这对我来说是不可能的。我们需要在绑定构造函数中提供的属性此示例包含错误:验证结果上的ErrorContent属性为只读。您应该在ValidationResult构造函数中设置ErrorContent