'宣言 Public Property ShowErrors As System.Boolean
public System.bool ShowErrors {get; set;}
'宣言 Public Property ShowErrors As System.Boolean
public System.bool ShowErrors {get; set;}
検証エラーは、いくつかの方法でトリガーされます。
データ項目のプロパティセッターが例外をスローした場合は、セルエディタがエラーメッセージを表示し、エラーが修正されるまで、または変更がキャンセルされるまで、エディタはアクティブな状態を維持します。
データ項目が System.ComponentModel.IDataErrorInfoインターフェイスを実装している場合は、デフォルトのインデクサを実装し、列固有のエラーメッセージ(セルエディタにも表示される)を返すことで、項目が列レベルの検証エラーを発生させることができます。または、Error プロパティをエラーメッセージに設定することで、項目レベルの検証エラーをトリガーすることもできます。この場合は、いずれかの列固有のエラーとしてではなく、行ヘッダーの最初のセルにアイコンとしてエラーが表示されます。
データ項目が System.ComponentModel.INotifyDataErrorInfoインターフェイスを実装している場合は、上記の列レベルまたは項目レベルの検証エラーを非同期に発生させることができます。 System.ComponentModel.INotifyDataErrorInfoは、 System.ComponentModel.IDataErrorInfoより複雑で、実装も難しくなります。
public class Product : INotifyPropertyChanged, IEditableObject, IDataErrorInfo { // ** 方法 1:Price が負の値に設定されたときに例外をスローします public double? Price { get { return (double?)GetValue("Price"); } set { if (value <= 0) { throw new Exception("Price は0より大きくなければなりません"); } SetValue("Price", value); } } // ** 方法 2:特定の列のエラーを返します string IDataErrorInfo.this[string columnName] { get { string msg = null; switch (columnName) { case "Cost": if (Cost <= 0) { msg = "Cost は0より大きくなければなりません"; } break; } return msg; } } // ** 方法 3:行全体のエラーを返します // (検証は複数の列に基づきます) string IDataErrorInfo.Error { get { return Price < Cost ? "Price は Cost より大きくなければなりません" : null; } } }