[英]Windows 10 (Universal Windows App) data validation
我試圖弄清楚如何在UWP下進行數據驗證,但根據我發現的情況,基本上沒有什么我可以實現的。
因此,我試圖實現我的自定義驗證邏輯。 我現在遇到的問題是,我在一個TextBlock
上顯示錯誤信息,而不是直接在包含數據錯誤的特定TextBox
下顯示。
這就是我現在所做的:
public class Customer : ViewModel
{
private string _Name = default(string);
public string Name { get { return _Name; } set { SetProperty(ref _Name, value); OnPropertyChanged("IsValid"); } }
private string _Surname = default(string);
public string Surname { get { return _Surname; } set { SetProperty(ref _Surname, value); OnPropertyChanged("IsValid"); } }
private DateTime _DateOfBirth = default(DateTime);
public DateTime DateOfBirth { get { return _DateOfBirth; } set { SetProperty(ref _DateOfBirth, value); OnPropertyChanged("IsValid"); } }
public int ID { get; set; }
public bool IsValid
{
get
{
//restart error info
_ErrorInfo = default(string);
if (string.IsNullOrWhiteSpace(Name))
_ErrorInfo += "Name cannot be empty!" + Environment.NewLine;
if (string.IsNullOrWhiteSpace(Surname))
_ErrorInfo += "Surname cannot be empty!" + Environment.NewLine;
//raise property changed
OnPropertyChanged("ErrorInfo");
return !string.IsNullOrWhiteSpace(Name) &&
!string.IsNullOrWhiteSpace(Surname);
}
}
private string _ErrorInfo = default(string);
public string ErrorInfo { get { return _ErrorInfo; } set { SetProperty(ref _ErrorInfo, value); } }
}
題:
如何調整我的代碼,以便不是讓一個標簽包含所有錯誤信息,我可以在每個文本框下分配標簽並在那里顯示驗證錯誤? 我應該使用字典嗎? 如果是,我如何將其綁定到我的視圖?
我很快成為使用Prism的粉絲,看到這個精彩的演示用戶輸入驗證與Prism和UWP上的數據注釋 。
它比我在這里輸入的任何東西都要好。
Prism的問題在於它使用字符串索引器。 但是在uwp中綁定只是不允許字符串索引...只有整數! 還缺少一些關鍵功能,例如實體視圖模型之間以及它們與上下文之間的協調。
我已經做了一些研發,似乎以下是uwp中良好驗證器的關鍵元素 - 使用字符串作為綁定目標,以避免丟棄轉換異常 - 跟蹤轉換錯誤與驗證錯誤分開 - 驗證視圖的基類model和自動生成的派生類,指定屬性名稱 - 將多個視圖模型綁定在一起的事件,以便ui的多個部分保持一致 - 與上下文關聯的集中錯誤計數和保存/恢復能力
有什么可以做到的嗎? 如果是這樣,那么我還沒有找到它。
SJB
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.