チェックボックスが付いた親 UControl があります。チェックすると、別の UControl がタブアイテムにロードされます。親 UC と子 UC の両方で検証を行っています。新しいレコードを作成するときに検証は完全に機能しますが、チェックボックスのチェックを外してから再度チェックすると、子 UC で検証の境界線が消えます。親 UC に「保存」ボタンがあります。このボタンは、すべての親フィールドと子フィールドが入力されるまでボタンを無効にするという点で、子の検証に応答することに気付きました。ボックスの再チェックが完了したときに、赤い検証境界線を表示できないようです。子の UC フィールドを再検証する方法を教えてください。
親 UC から呼び出される
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(child => IsValid(child));
}
親 mycheckbox_checked イベントからの子 UC の追加
tabSafetyCageRequired.Visibility = Visibility.Visible;
stackPanelSafetyCageDetail.Children.Clear();
_currentSafetyCageDetail = childSafetyCageDetailUControl;
stackPanelSafetyCageDetail.Children.Add(_currentSafetyCageDetail);
親の mycheckbox_Unchecked イベントから子の UC を削除する
_currentSafetyCageDetail = childSafetyCageDetailUControl;
stackPanelSafetyCageDetail.Children.Remove(_currentSafetyCageDetail);
tabSafetyCageRequired.Visibility = Visibility.Collapsed;
リクエストに応じてより多くのコード....
PS。「AdornerDecorator」であることを示唆する記事に出くわしましたが、上記のように、検証は最初のパス (新しいレコード) で機能しますが、チェックボックスをオン/オフすると赤い境界線が失われます。
前もって感謝します