我有一個ViewModel實現了IDataErrorInfo和一個master-detail-view。當用戶在詳細信息視圖中點擊保存按鈕時,如何才能觸發當前ViewModel項目的顯示?按鈕點擊驗證ViewModel
2
A
回答
4
首先在您的虛擬機上添加一個標誌,將其初始設置爲false。 在您的Button命令代碼中(假設您已將按鈕綁定到VM上的命令),請在運行驗證代碼之前打開該標誌。
在IDataErrorInfo屬性中的「get」代碼中,如果該標誌設置爲true,則僅返回驗證錯誤,否則返回空字符串。
在將標誌切換回false之前,用一個空字符串作爲屬性名稱引發PropertyChangedEvent,這將強制綁定系統重新評估當前上下文中的所有綁定,以及根據IDataErrorInfo檢查錯誤。
3
benPearce給出了很好的答案。
正如他指出的那樣。
- 有
this[columnName]
返回null,除非你點擊你需要調用OnPropertyChanged(null)
讓WPF重新evaluete綁定保存命令中的「保存」 - (和查詢索引)(即使數據是無效的)
本示例不使用標誌,而是使用字典實現相同的結果。
在查看
<TextBox Text="{Binding Surname, ValidatesOnDataErrors=True}" />
在視圖模型
public string Surname { get; set; }
#region Validation
//http://blogs.msdn.com/b/bethmassi/archive/2008/06/27/displaying-data-validation-messages-in-wpf.aspx
Dictionary<string, string> validationErrors = new Dictionary<string,string>();
void Validate()
{
validationErrors.Clear();
if (srtring.IsNullOrWhitespace(Surname)) // Validate Surname
{
validationErrors.Add("Surname", "Surname is mandatory.");
}
//http://stackoverflow.com/a/5210633/240835
// Call OnPropertyChanged(null) to refresh all bindings and have WPF check the this[string columnName] indexer.
OnPropertyChanged(null);
}
#region IDataErrorInfo Members
public string Error
{
get
{
if (validationErrors.Count > 0)
{
return "Errors found.";
}
return null;
}
}
public string this[string columnName]
{
get
{
if (validationErrors.ContainsKey(columnName))
{
return validationErrors[columnName];
}
return null;
}
}
#endregion
#endregion
public void Save()
{
Validate();
if (validationErrors.Count == 0)
{
DoSave();
}
}
相關問題
- 1. 按鈕點擊驗證ajax
- 2. 按鈕點擊進行JavaScript驗證
- 3. 按鈕點擊jQuery表單驗證
- 4. 按鈕點擊(Java swing)的火驗證
- 5. 避免驗證點擊特定按鈕
- 6. 點擊驗證並禁用按鈕
- 7. 按鈕點擊的Editext驗證
- 8. 點擊搜索按鈕觸發驗證
- 9. 驗證點擊兩個按鈕
- 10. 觸發JQuery驗證()按鈕點擊
- 11. 如何驗證按鈕點擊
- 12. 驗證動態texbox的按鈕點擊
- 13. MvvmCross - 手柄按鈕點擊viewmodel
- 14. 使用viewmodel來控制按鈕點擊
- 15. 我如何點擊按鈕點擊驗證消息而不是提交按鈕
- 16. jQuery驗證引擎驗證搜索按鈕點擊輸入還
- 17. 當按鈕被點擊時,WinForm驗證不會被驗證
- 18. Kendo驗證沒有點擊按鈕點擊
- 19. 驗證按鈕
- 20. 驗證按鈕
- 21. 在按鈕單擊驗證WPF
- 22. 使用jQuery驗證按鈕單擊
- 23. 如何驗證按鈕單擊方法
- 24. Struts表單驗證不執行驗證取決於點擊按鈕
- 25. 測試驗證一個按鈕先被點擊後先點擊「Webfomrs」
- 26. 驗證與ViewModel
- 27. 如何使用jQuery驗證插件按鈕點擊
- 28. 關於按鈕點擊事件的Asp.net電子郵件驗證
- 29. Laravel身份驗證路由後點擊登錄按鈕
- 30. 如何刪除按鈕上的驗證點擊
我很樂意回答這個問題,以及 – Charlie 2010-05-06 14:31:37