2

チェックボックスが付いた親 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」であることを示唆する記事に出くわしましたが、上記のように、検証は最初のパス (新しいレコード) で機能しますが、チェックボックスをオン/オフすると赤い境界線が失われます。

前もって感謝します

4

0 に答える 0