winforms で Errorprovider をシミュレートする検証メカニズムを実装したいと思います。IDataErrorInfo を使用しようとしましたが、問題はフォームの読み込み時に検証を実行しようとしていることです。私の要件は、ページ内のボタンのクリック時に検証を実行する必要があることです。WPF で検証を実行するための他のより良い方法はありますか?
質問する
94 次
1 に答える
2
検証が簡単な部分であることがわかったように聞こえます-必要になるまで検証しないようにします..IErrorInfoを実装するクラスにboolプロパティを配置します。
public bool IsReadyToValidate {get;set;}
各物件に
public object SomeProperty
{
get {return _someProperty;}
set
{
if(_someProperty == value) return;
_property = value;
if(IsReadyToValidate)
//do validation
または、属性ベースの検証を使用する場合:
[CustomMethodValidator("ValidateSomeProperty")]
public string SomeProperty
{
if(_someProperty == value) return;
set
{
if(_property == value)
return;
_property = value;
RaisePropertyChanged(() => SomeProperty);
}
}
private bool ValidateSomeProperty()
{
bool isValid = true;
if(IsReadyToValidate)
//do validation
return is valid;
ボタンをクリックしたら、IsReadyToValidate を true に設定して再検証します。繰り返しますが、それはすべて実装に依存します。多分このような方法を入れますか?
public void Validate()
{
foreach (var prop in PropertiesWithValidators[GetType()])
ValidateProperty(prop.Name);
HasErrors = _errorDictionary.Count > 0;
RaisePropertyChanged(() => Error);
}
または、フラグを反転して検証した後にプロパティを再充填するなど、いくつかのブルートな方法を実行できます
public void Validate()
{
IsReadyToValidate = true;
//now it will validate:
SomeProperty = SomeProperty;
于 2013-06-12T15:08:17.857 に答える