using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace FWindSoft.Wpf
{
///
/// 依赖属性扩展
///
public static class DependencyObjectExtensions
{
public static bool HasError(this DependencyObject depObject)
{
bool flag = false;
#region 验证修改
if (Validation.GetHasError(depObject))
{
flag = true;
return flag;
}
#endregion
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObject); i++)
{
var child = VisualTreeHelper.GetChild(depObject, i);
if (child.HasError())
{
flag = true;
break;
}
}
return flag;
}
///
/// 判定元素是否错误
///
///
/// 返回错误元素
///
public static bool HasError(this DependencyObject depObject,out DependencyObject errorObject)
{
bool flag = false;
errorObject = null;
if (Validation.GetHasError(depObject))
{
flag = true;
errorObject = depObject;
return flag;
}
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObject); i++)
{
var child = VisualTreeHelper.GetChild(depObject, i);
if (child.HasError(out errorObject))
{
flag = true;
break;
}
}
return flag;
}
public static List GetSpecifyTypeChildren(this DependencyObject dependencyObject) where T : DependencyObject
{
List list = new List();
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(dependencyObject); i++)
{
var child = VisualTreeHelper.GetChild(dependencyObject, i);
if (child is T)
{
list.Add((T)child);
continue;
}
list.AddRange(child.GetSpecifyTypeChildren());
}
return list;
}
}
}