コードビハインドからの検証の実行が発生しました。私のデータは、データグリッドに表示されます。列の1つ(タイプ)がドロップダウンであり、ドロップダウンメニューが変更されたときに、ドロップダウンクローズイベントがトリガーされ、コード内で処理されます。INotifyDataErrorInfoコードの後ろに昇格エラーがありません
私が達成しようとしているのは、ドロップダウンで新しく選択したタイプと一致するように、次の列の内容を検証することです。一致しない場合は、グリッドに表示される検証エラーが欲しいです。 INotifyDataErrorInfoインターフェイスを使用して検証を実装しました。コード内で使用する場合を除いて、実際にはうまく動作します。コードビハインドが検証を呼び出すと、DataGridのValidationSummaryは決して更新されません。私はここで間違っているのですか?デバッガを使用している場合、私ははっきりとインターフェースのdictionnaryエラーに追加されたエラーを表示することができます...ここで
はハンドラである:
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
検証が成功したかどうかにかかわらず、常にRemoveErrorを呼び出すべきだと思います。またはメソッドの最後に 'RaiseErrorsChanged(property)'の呼び出しを追加するだけです。 – vorrtex
また、ValidationSummaryコントロール(赤い枠線ではない)でのみ問題が発生した場合、検証されるはずのバインディングに 'NotifyOnValidationError = True'を追加してみてください。 – vorrtex
@vorrtexあなたが答えを出したら、私はRaiseErrorChangedを見つけられませんでした。 thx – Stainedart