Synchronize the Net40

This commit is contained in:
NaBian committed 2019-02-24 12:46:34 +08:00
1 parent b8c264d135
commit 11ebf96334
21 files changed
+282 -29

No files matched your search

@@ -6,9 +6,9 @@ namespace HandyControl.Tools
{
public class VisualHelper
{
internal static VisualStateGroup TryGetVisualStateGroup(DependencyObject dependencyObject, string groupName)
internal static VisualStateGroup TryGetVisualStateGroup(DependencyObject d, string groupName)
{
var root = GetImplementationRoot(dependencyObject);
var root = GetImplementationRoot(d);
if (root == null)
{
return null;
@@ -20,13 +20,35 @@ namespace HandyControl.Tools
.FirstOrDefault(group => string.CompareOrdinal(groupName, group.Name) == 0);
}
internal static FrameworkElement GetImplementationRoot(DependencyObject dependencyObject)
internal static FrameworkElement GetImplementationRoot(DependencyObject d)
{
return 1 == VisualTreeHelper.GetChildrenCount(dependencyObject)
? VisualTreeHelper.GetChild(dependencyObject, 0) as FrameworkElement
return 1 == VisualTreeHelper.GetChildrenCount(d)
? VisualTreeHelper.GetChild(d, 0) as FrameworkElement
: null;
}
internal static T GetGetChild<T>(DependencyObject d) where T : DependencyObject
{
if (d is T scrollViewer)
{
return scrollViewer;
}
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(d); i++)
{
var child = VisualTreeHelper.GetChild(d, i);
var result = GetGetChild<T>(child);
if (result != null) return result;
}
return default(T);
}
/// <summary>
/// 获取当前应用中处于激活的一个窗口
/// </summary>
/// <returns></returns>
public static Window GetActiveWindow() => Application.Current.Windows.OfType<Window>().SingleOrDefault(x => x.IsActive);
}
}