[英]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.