比方說,我有一個簡單的類數據綁定和setter方法拋出異常
public class Person
{
public string Name { get; set; }
private int _age;
public int Age
{
get { return _age; }
set
{
if(value < 0 || value > 150)
throw new ValidationException("Person age is incorrect");
_age = value;
}
}
}
然後我想設置該等級的綁定:
txtAge.DataBindings.Add("Text", dataSource, "Name");
現在,如果我輸入不正確時代價值文本框(比如說200)在setter中的異常將被吞噬,我將無法做任何事情,直到我改正了文本框中的值。我的意思是文本框將無法放鬆焦點。這一切都是沉默的 - 沒有錯誤 - 你無法做任何事情(甚至關閉表格或整個應用程序),直到你改正了價值。
這看起來像一個錯誤,但問題是:這是什麼解決方法?
是否有你拋出異常而不是實現IDataErrorInfo的原因?我認爲後者是WinForms中更習慣的方法(並且在WPF中它仍然很好地工作)。 – 2009-05-19 00:11:19