【问题标题】:How to implement Wpf Combo box Validation如何实现 Wpf 组合框验证
【发布时间】:2010-10-20 06:58:42
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# wpf


    【解决方案1】:

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

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

    2- 在定义新文本框时,您可以在运行时添加绑定,如下所示。

            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- 可以为组合框添加相同的内容

    【讨论】:

    • 感谢您的回复,我需要先创建属性,然后将路径值分配给绑定类构造函数,然后如何在运行时创建属性。
    • @JS : 你会提前知道你的数据源和你想要分配的属性。
    • 根据您的建议,我的工作对我来说一切都很好,但对我来说只有一件事我需要为每个控件创建一个属性,这对我来说是不可能的。我们需要在绑定构造函数中提供的属性
    • 此示例包含错误:验证结果的 ErrorContent 属性为只读。您应该在 ValidationResult 构造函数中设置 ErrorContent
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多