コードビハインドから検証を実行する問題が発生しています。私のデータはデータグリッドに表示されます。列(タイプ)の1つはドロップダウンであり、ドロップダウンメニューが変更されると、コードビハインドで処理されるDropDownClosedイベントがトリガーされます。
私が達成しようとしているのは、次の列の内容を検証して、ドロップダウンで新しく選択したタイプと一致させることです。一致しない場合は、検証エラーをグリッドに表示したいと思います。INotifyDataErrorInfoインターフェイスを使用して検証を実装しましたが、コードビハインドで使用する場合を除いて、非常にうまく機能します。コードビハインドが検証を呼び出すと、データグリッドのValidationSummaryが更新されることはありません。私がここで間違っていること??? デバッガーを使用すると、インターフェイスのエラー辞書に追加されているエラーをはっきりと確認できます...
ハンドラーは次のとおりです。
private void TypeBoxChanged(object sender, EventArgs e)
{
ComboBox box = (sender as ComboBox);
IncomingPolicy row = (IncomingPolicy)box.DataContext;
string ruleTypeValue = TypeList.GetKeyForText(box.SelectedItem.ToString());
//check if the type is the same
if(row.TypeWrapper == ruleTypeValue)
return;
if (row.ValidateRule(ruleTypeValue))
{
//SAVE the record
}
else
{
row.RaiseErrorsChanged("RuleWrapper");
}
}
ルールの検証メソッドは、ruletypevalueに基づいてこのメソッドを呼び出します
public bool ValidateRegularExpression(string property, string value, string expression, string errorMessage)
{
bool isValid = true;
Regex regex = new Regex(expression);
Match match = regex.Match(value);
if (match.Success)
{
RemoveError(property, errorMessage);
}
else
{
AddError(property, errorMessage, false);
isValid = false;
}
return isValid;
}
MSDNのサンプル実装に従いましたhttp://msdn.microsoft.com/en-us/library/system.componentmodel.inotifydataerrorinfo%28VS.95%29.aspx