Silverlight获取子控件和父控件方法

Silverlight获取子控件和父控件方法,第1张

概述public class VTHelper     {          // 在实际项目中,为满足实际开发需求,对VisualTreeHelper的方法重新进行封装是非常必要的。         ///首先要介绍的Hleper方法是GetParentObject方法,获取控件方法。该方法将根据当前控件,遍历查找其父控件是否存在。参数1是表示当前子控件名,参数2是要查询父控件名;使用Visual

public class VTHelper
    {
         // 在实际项目中,为满足实际开发需求,对VisualTreeHelper的方法重新进行封装是非常必要的。
        ///首先要介绍的Hleper方法是GetParentObject方法,获取父控件方法。该方法将根据当前控件,遍历查找其父控件是否存在。参数1是表示当前子控件名,参数2是要查询父控件名;使用VisualTreeHelper.GetParent方法获取当前父控件。

        public T GetParentObject<T>(DependencyObject obj,string name) where T : FrameworkElement
        {
            DependencyObject parent = VisualTreeHelper.GetParent(obj);

            while (parent != null)
            {
                if (parent is T && (((T)parent).name == name | string.IsNullOrEmpty(name)))
                {
                    return (T)parent;
                }

                parent = VisualTreeHelper.GetParent(parent);
            }

            return null;
        }


        //另外一个Helper方法是GetChildobject,获取子控件方法。该方法将根据当前控件,遍历查找其子控件是否存在。参数1是表示当前父控件名,参数2是要查询子控件名;

        public T GetChildobject<T>(DependencyObject obj,string name) where T : FrameworkElement
        {
            DependencyObject child = null;
            T grandChild = null;

            for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++)
            {
                child = VisualTreeHelper.GetChild(obj,i);

                if (child is T && (((T)child).name == name | string.IsNullOrEmpty(name)))
                {
                    return (T)child;
                }
                else
                {
                    grandChild = GetChildobject<T>(child,name);
                    if (grandChild != null)
                        return grandChild;
                }
            }

            return null;

        }

        /// <summary>
        /// 找出符合条件的一个子对象.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="obj"></param>
        /// <returns></returns>
        public T GetChildobjectByType<T>(DependencyObject obj) where T : FrameworkElement
        {
            DependencyObject child = null;
            T grandChild = null;

            for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++)
            {
                child = VisualTreeHelper.GetChild(obj,i);

                if (child is T )
                {
                    return (T)child;
                }
                else
                {
                    grandChild = GetChildobjectByType<T>(child);
                    if (grandChild != null)
                        return grandChild;
                }
            }

            return null;

        }

        //最后介绍一个Helper方法是GetChildobjects方法,该方法将把所有子控件作为List集合返回到客户端。其中第一个参数是父控件参数,而第二个参数是特定子控件名称,如果需要遍历全部子控件,第二个参数留空即可。

        public List<T> GetChildobjects<T>(DependencyObject obj,string name) where T : FrameworkElement
        {
            DependencyObject child = null;
            List<T> childList = new List<T>();

            for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++)
            {
                child = VisualTreeHelper.GetChild(obj,i);

                if (child is T && (((T)child).name == name || string.IsNullOrEmpty(name)))
                {
                    childList.Add((T)child);
                }

                childList.AddRange(GetChildobjects<T>(child,""));
            }

            return childList;

        }

    }

 

转载自 http://www.voidcn.com/article/p-zyvpucrm-bke.html

总结

以上是内存溢出为你收集整理的Silverlight获取子控件和父控件方法全部内容,希望文章能够帮你解决Silverlight获取子控件和父控件方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1022853.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存