WPF 得到子指定元素方法和得到指定子元素集合方法MvvM得到焦点

    public class UIHelper
    {
        /// <summary>
        /// 在Visual里找到想要的元素
        /// childName可为空,不为空就按名字找
        /// </summary>
        public static T FindChild<T>(DependencyObject parent, string childName)
           where T : DependencyObject
        {
            if (parent == null) return null;

            T foundChild = null;

            int childrenCount = VisualTreeHelper.GetChildrenCount(parent);
            for (int i = 0; i < childrenCount; i++)
            {
                var child = VisualTreeHelper.GetChild(parent, i);

                T childType = child as T;
                if (childType == null)
                {
                    // 住下查要找的元素
                    foundChild = FindChild<T>(child, childName);

                    // 如果找不到就反回
                    if (foundChild != null) break;
                }
                else if (!string.IsNullOrEmpty(childName))
                {
                    var frameworkElement = child as FrameworkElement;
                    // 看名字是不是一样
                    if (frameworkElement != null && frameworkElement.Name == childName)
                    {
                        //如果名字一样返回
                        foundChild = (T)child;
                        break;
                    }
                }
                else
                {
                    // 找到相应的元素了就返回
                    foundChild = (T)child;
                    break;
                }
            }

            return foundChild;
        }

        /// <summary>
        /// 得到指定元素的集合
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="depObj"></param>
        /// <returns></returns>
        public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj)
            where T : DependencyObject
        {
            if (depObj != null)
            {
                for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
                {
                    DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
                    if (child != null && child is T)
                    {
                        yield return (T)child;
                    }

                    foreach (T childOfChild in FindVisualChildren<T>(child))
                    {
                        yield return childOfChild;
                    }
                }
            }
        }
    }

  

 public class FocusAdvancement
    {
        public static bool GetAdvancesByEnterKey(DependencyObject obj)
        {
            return (bool)obj.GetValue(AdvancesByEnterKeyProperty);
        }

        public static void SetAdvancesByEnterKey(DependencyObject obj, bool value)
        {
            obj.SetValue(AdvancesByEnterKeyProperty, value);
        }

        public static readonly DependencyProperty AdvancesByEnterKeyProperty =
            DependencyProperty.RegisterAttached("AdvancesByEnterKey", typeof(bool), typeof(FocusAdvancement),
            new UIPropertyMetadata(OnAdvancesByEnterKeyPropertyChanged));

        static void OnAdvancesByEnterKeyPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var element = d as UIElement;
            if (element == null) return;

            if ((bool)e.NewValue) element.KeyDown += Keydown;
            else element.KeyDown -= Keydown;
        }

        static void Keydown(object sender, KeyEventArgs e)
        {
            if (!e.Key.Equals(Key.Enter)) return;

            var element = sender as UIElement;

            if (element != null) element.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
        }

    }
xmlns:FOU="clr-namespace:WPFAppVM.AppViews.AppCustomViews"

<TextBox FOU:FocusAdvancement.AdvancesByEnterKey="True" Width="120"></TextBox>
<TextBox IsReadOnly="True" FOU:FocusAdvancement.AdvancesByEnterKey="True" Width="120"></TextBox>
<Button Height="30" Width="80" FOU:FocusAdvancement.AdvancesByEnterKey="True">保存</Button>

  

 

 

 

时间: 2024-09-20 00:02:44

WPF 得到子指定元素方法和得到指定子元素集合方法MvvM得到焦点的相关文章

JavaScript判断一个字符串是否包含指定子字符串的方法

 这篇文章主要介绍了JavaScript判断一个字符串是否包含指定子字符串的方法,实例分析了javascript字符串操作的技巧,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了JavaScript判断一个字符串是否包含指定子字符串的方法.分享给大家供大家参考.具体分析如下: 下面的JS代码,为String对象定义了一个contains方法用于判断字符串是否包含子字符串,非常有用. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 if (!Array.prototy

jquery如何获取某一元素的指定子元素

问题描述 jquery如何获取某一元素的指定子元素 我想获取如图的不确定个数的img标签中的src,应该怎么写呀? 解决方案 $(this).children("ul").css("color","#FF6666"); 解决方案二: children,如一楼所说 解决方案三: var src=new Array; $('.uploadImg').find('.upload_image').each(function(index, element)

JavaScript删除指定子元素代码实例_javascript技巧

原生javascript删除指定子元素代码实例: 本章节介绍一下如何利用原生javascript实现删除指定子元素. 大家都知道使用jquery实现此功能更为方便,不过使用原生的javascript也不麻烦,下面做一下介绍. 关于jquery如何实现此功能可以参阅jquery删除指定子元素代码实例一章节. 代码实例: 复制代码 代码如下: <!DOCTYPE HTML> <html> <meta charset="utf-8"> <title&

jquery删除指定子元素代码实例_jquery

jquery删除指定子元素代码实例: 本章节介绍一下如何利用jQuery实现删除指定子元素. 如何利用原生javascript实现此功能可以参阅原生javascript删除指定子元素代码实例一章节. 其实实现此功能的方式有很多种,下面介绍一下其中比较常见的一种. 代码实例如下: 复制代码 代码如下: <!DOCTYPE HTML> <html> <meta charset="utf-8"> <title></title> &l

jquery中获取元素里某一特定子元素的代码_jquery

之前做的一些JQUERY应用都是些很基础的编程,对于选择器要求不高,像类似于"$('.class')"."$('#id')"."$('#id>.class')"."$(this)"."$(this).parent()"."$(this).children()"这些简单的语句都能解决的. 问题的出现是我要选择一个ul里某个的li中的一个span,因为要利于编程,li是用 $('ul&

xml-dom4j如何在指定元素位置添加一个新的元素,api中找了半天没找到对应的方法

问题描述 dom4j如何在指定元素位置添加一个新的元素,api中找了半天没找到对应的方法 dom4j如何在xml中指定元素位置添加一个新的元素,api中找了半天没找到对应的方法.求解答 解决方案 http://wenhai.iteye.com/blog/544838 解决方案二: 你是要创建xml文件还是解析? 如果是创建,则是从根节点一步一步到子节点,再有了外层节点才能创建里层的节点. 如果是解析,原理也是一样,从根节点一步步向里层节点解析的

javascript-用NVelocity+html中的#foreach自动生成的元素如何获取它的父元素和子元素?

问题描述 用NVelocity+html中的#foreach自动生成的元素如何获取它的父元素和子元素? 比如form中的表格中用#foreach自动生成行显示数据项,行的最后有修改/删除按钮,如何获取自动生成中的元素的值并传到服务器/在js中进行操作?如果无法实现,有什么替代方法? 解决方案 子元素过滤选择器(获取父元素中指定的某个子元素) 解决方案二: js的按钮事件传递this对象,this指向按钮这个dom,然后通过dom关系进行获取相关元素 如 <div>.....其他内....<

Js操作DOM元素及获取浏览器高宽的简单方法_javascript技巧

在JavaScript中,经常会来获取Document文档元素,是 HTML 文档对象模型的英文缩写,Document Object Model for HTML,是基于浏览器编程,HTML DOM 定义了用于 HTML 的一系列标准的对象,以及访问和处理 HTML 文档的标准方法. 通过 DOM,可以访问所有的 HTML 元素,连同它们所包含的文本和属性.可以对其中的内容进行修改和删除,同时也可以创建新的元素.HTML DOM 独立于平台和编程语言.它可被任何编程语言诸如 Java.JavaS

JavaScript从数组中删除指定值元素的方法

 这篇文章主要介绍了JavaScript从数组中删除指定值元素的方法,实例分析了两种常用的javascript操作数组指定元素的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JavaScript从数组中删除指定值元素的方法.分享给大家供大家参考.具体分析如下: 下面的代码使用了两种方式删除数组的元素,第一种定义一个单独的函数,第二种为Array对象定义了一个removeByValue的方法,调用非常简单 定义函数removeByValue进行元素删除 ? 1 2 3 4