重新验证TabItem中的子UserControl

时间:2013-07-29 05:56:17

标签: c# wpf

我有一个父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”,但正如我上面说的那样,验证确实适用于第一遍(新记录),但在检查/取消选中复选框时会丢失它的红色边框。

提前致谢

0 个答案:

没有答案