2

我有一个带有复选框的父 UControl。一旦选中,它将另一个 UControl 加载到 tabitem 中。我对父母和孩子的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