| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /* ==============================================================================
- * 功能描述:VisualTreeExtend
- * 创 建 者:Garrett
- * 创建日期:2017/11/9 16:08:37
- * ==============================================================================*/
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Media;
- namespace SAGA.DotNetUtils.WPF
- {
- /// <summary>
- /// VisualTreeExtend
- /// </summary>
- public class VisualTreeExtend
- {
- /// <summary>
- /// 查找可视化树的Parent
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="source"></param>
- /// <returns></returns>
- public static DependencyObject VisualUpwardSearch<T>(DependencyObject source)
- {
- while (source != null && source.GetType() != typeof(T))
- source = VisualTreeHelper.GetParent(source);
- return source;
- }
-
- /// <summary>
- /// 获取ItemTemplate内部的各种控件
- /// </summary>
- /// <typeparam name="childItem"></typeparam>
- /// <param name="obj"></param>
- /// <returns></returns>
- public static childItem FindVisualChild<childItem>(DependencyObject obj) where childItem : DependencyObject
- {
- int count = VisualTreeHelper.GetChildrenCount(obj);
- for (int i = 0; i < count; i++)
- {
- DependencyObject child = VisualTreeHelper.GetChild(obj, i);
- if (child != null && child is childItem)
- return (childItem)child;
- else
- {
- childItem childOfChild = FindVisualChild<childItem>(child);
- if (childOfChild != null)
- return childOfChild;
- }
- }
- return null;
- }
- }
- }
|