我有一个带有复选框的父 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”,但正如我上面所说的,验证确实在第一次通过(新记录)时起作用,但在选中/取消选中复选框时会丢失它的红色边框。
提前致谢