1. ホーム
  2. wpf

[解決済み] WPF検証エラーの検出

2022-09-11 05:18:12

質問

WPFでは、データバインディングの際にデータレイヤーに投げられたエラーに基づいて検証を設定することができます。 ExceptionValidationRule または DataErrorValidationRule .

このように設定されたコントロールの束があり、保存ボタンがあったとします。 ユーザーが保存ボタンをクリックしたとき、保存を続行する前に検証エラーがないことを確認する必要があります。 バリデーションエラーがある場合は、大声で叫びたいものです。

WPFでは、データバウンドコントロールのいずれかに検証エラーが設定されているかどうかを調べるにはどうしたらよいでしょうか。

どのように解決するのですか?

この投稿は非常に役に立ちました。投稿してくれたすべての人に感謝します。ここでは、あなたが好きか嫌いかどちらかの LINQ バージョンを紹介します。

private void CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
    e.CanExecute = IsValid(sender as DependencyObject);
}

private bool IsValid(DependencyObject obj)
{
    // The dependency object is valid if it has no errors and all
    // of its children (that are dependency objects) are error-free.
    return !Validation.GetHasError(obj) &&
    LogicalTreeHelper.GetChildren(obj)
    .OfType<DependencyObject>()
    .All(IsValid);
}