在WPF中运行时创建的字段的表单验证

本文关键字:字段 验证 表单 创建 WPF 运行时 | 更新日期: 2023-09-27 18:12:53

我在运行时从字段列表中的一些参数创建了一个表单。

List<Fields>  lstFields =  new List<Fields>()
            {
                new Fields(){ FieldType = Fields.fieldTypes.INPUT, Info = "Some Info", Label = "first", Mandatory= true},
                new Fields(){ FieldType = Fields.fieldTypes.CHK, Info ="Some Info", Label="Second", 
                    Items = new List<String>(){"item1","item2","item3","item4"} },
                new Fields(){ FieldType = Fields.fieldTypes.INPUT, Label = "Name", Mandatory= true},
                new Fields(){ FieldType = Fields.fieldTypes.INPUT, Label = "Surname", Mandatory= true},
                new Fields(){ FieldType = Fields.fieldTypes.COMBO, Label = "City", Mandatory = false,  
                    Items = new List<String>(){"item1","item2","item3","item4"}}
            }

我在foreach语句中创建字段:

 foreach (Fields fd in lstFields)
                {
                    [...]
                    switch (fd.FieldType)
                    {
                        case Fields.fieldTypes.INPUT:
                            TextBox currentTB = new TextBox(); //It violates MVVM pattern :(
                            content.Add(currentTB);
                            [...]
                            break;
                        [...]
                        default:
                            break;
                    }
                }
            }

我需要一个表单验证策略。我所知道的所有策略都是基于绑定。问题是我不能绑定属性,因为我是动态创建控件的。我想按照MVVM的设计模式来解决这个问题

在WPF中运行时创建的字段的表单验证

你说你想用MVVM解决它,但你已经通过在代码中创建视图元素公然违反了它。你应该做的是创建视图模型来表示你想要创建的GUI项目,在ItemsControl中显示它们,并使用DataTemplates和Triggers的组合来自动为你创建视图控件。通过这样做,您可以确保所有内容都是数据绑定的,并且您可以正确地遵守MVVM;然后像在任何其他MVVM应用程序中一样完成数据验证。

事实证明,就在前几天我回答了一个问题,并发布了代码,展示了如何做到这一点