簡體   English   中英

在WPF中創建的運行時字段的表單驗證

[英]Form Validation for fields created run-time in WPF

我在運行時根據字段列表中的某些參數創建表單。

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設計模式解決問題。

您說要使用MVVM解決它,卻已經通過在代碼中創建視圖元素來公然違反它。 您應該做的是創建視圖模型以表示要創建的GUI項,將它們顯示在ItemsControl中,並使用DataTemplates和Triggers的組合為您自動創建視圖控件。 通過這樣做,確保所有內容都受數據約束,並正確遵守MVVM; 然后像在任何其他MVVM應用程序中一樣完成數據驗證。

事實證明,前幾天我回答了一個問題,並發布了代碼,顯示了確切的操作方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM