WPF查找子控件和父控件方法
- 一、查找某种类型的子控件,并返回一个List集合
- public List<T> GetChildObjects<T>(DependencyObject obj, Type typename) where T : FrameworkElement
- {
- DependencyObject child = null;
- List<T> childList = new List<T>();
- for (int i = ; i <= VisualTreeHelper.GetChildrenCount(obj) - ; i++)
- {
- child = VisualTreeHelper.GetChild(obj, i);
- if (child is T && (((T)child).GetType() == typename))
- {
- childList.Add((T)child);
- }
- childList.AddRange(GetChildObjects<T>(child,typename));
- }
- return childList;
- }
- 调用:
- List<Button> listButtons = GetChildObjects<Button>(parentPanel, typeof(Button));
- 二、通过名称查找子控件,并返回一个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 = ; i <= VisualTreeHelper.GetChildrenCount(obj) - ; i++)
- {
- child = VisualTreeHelper.GetChild(obj, i);
- if (child is T && (((T)child).GetType() == name |string.IsNullOrEmpty(name)))
- {
- childList.Add((T)child);
- }
- childList.AddRange(GetChildObjects<T>(child,name));
- }
- return childList;
- }
- 调用:
- List<Button> listButtons = GetChildObjects<Button>(parentPanel, "button1");
- 三、通过名称查找某子控件:
- public T GetChildObject<T>(DependencyObject obj, string name) where T : FrameworkElement
- {
- DependencyObject child = null;
- T grandChild = null;
- for (int i = ; i <= VisualTreeHelper.GetChildrenCount(obj) - ; 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;
- }
- }
- returnnull;
- }
- 调用:
- StackPanel sp = GetChildObject<StackPanel>(this.LayoutRoot, "spDemoPanel");
- 四、通过名称查找父控件
- 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);
- }
- returnnull;
- }
- 调用:
- Grid layoutGrid = VTHelper.GetParentObject<Grid>(this.spDemoPanel, "LayoutRoot");
WPF查找子控件和父控件方法的更多相关文章
- vue:子组件通过调用父组件的方法的方式传参
在本案例中,由于子组件通过调用父组件的方法的方式传参,从而实现修改父组件data中的对象,所以需要啊使用$forceUpdate()进行强制刷新 父组件: provide() { return { s ...
- 【转】WPF查找子控件和父控件方法
一.查找某种类型的子控件,并返回一个List集合 public List<T> GetChildObjects<T>(DependencyObject obj, Type ty ...
- Android单个控件占父控件宽度一半且水平居中
前些天,在工作中遇到了一个需求:一个“加载上一页”的按钮宽度为父控件宽度一半,且水平居中于父控件中. 在此给出两种思路: 1.直接在Activity代码中获取到当前父控件的宽度,并将此按钮宽度值设置成 ...
- wpf 查找 子元素
RightContainer.ApplyTemplate();//如果找不到,就执行该句试一试 var xxx=UIHelper.FindChild<ScrollViewer>(Right ...
- 子元素使用float 父元素撑开方法
一个Div包含了多个子Div,并且子Div使用了浮动后,父Div确不能被撑开,如下图: 部分代码如下: 1 <style> 2 #div1{border:1px solid red;f ...
- 【转】C# 子窗体如何调用父窗体的方法
网络上有几种方法,先总结如下: 调用窗体(父):FormFather,被调用窗体(子):FormSub. 方法1: 所有权法 //FormFather: //需要有一个公共的 ...
- uni-app 子组件如何调用父组件的方法
1.在父组件methods中定义一个方法: changeType:function(type){ this.typeActive = type; alert(type); } 2.在父组件引用子组件时 ...
- WPF利用VisualTreeHelper遍历寻找对象的子级对象或者父级对象
原文:WPF利用VisualTreeHelper遍历寻找对象的子级对象或者父级对象 简介 本文将完整叙述我利用VisualTreeHelper实现题述功能的全部过程,想直接看函数实现的朋友可以跳到函数 ...
- C#中combobox 控件属性、事件、方法
一 .combobox 属性.事件.方法公共属性 名称 说明 AccessibilityObject 获取分配给该控件的 AccessibleObject. AccessibleDefaultActi ...
随机推荐
- iOS端JSON转Model链式编程框架SuperKVC使用方法与原理
背景 在client编程中.字典转模型是一个极为常见的问题,苹果提供了KVC来实现NSDictionary到Model的注入,可是KVC仅仅能进行单层浅注入.且无法处理类型转换.key与属性名不正确应 ...
- MVC 之Action
下面我要重新温习一下,MVC控制器中的Action方法相关概念: 1.Action方法必须是public,不能是private或者是protected; 2.Action方法不能够被重载: 3.Act ...
- 统一日志监控系统 springboot websocket 简单版 王代军-作品
http://git.oschina.net/redArmy/springboot-websocket-logs 目的: 统一监控 开发测试环境日志 如果需要可以拓展线上环境的日志(自己视情况而定) ...
- git版本控制文件提交到composer应用市场,并下载用市场的软件库
要把github中的项目提交到composer中去,必须在github管理的项目中新建对应的composer.json文件, composer.json文件建立的方法 cmd定位到项目目录 compo ...
- dubbo-monitor监控台的部署
参考资料:dubbo的monitorhttps://github.com/handuyishe/dubbo-monitorhttp://blog.yangcvo.me/2017/01/26/Java- ...
- nginx是以多进程的方式来工作的
nginx是以多进程的方式来工作的. nginx在启动后,会有一个master进程和多个worker进程. master进程主要用来管理worker进程: 包含: 1.接收来自外界的信号,向各work ...
- Socket tips: 同意socket发送UDP Broadcast
假设创建一个UDP Socket: socketHandle = socket(serverAddr->ai_family, serverAddr->ai_socktype, server ...
- Linux下NDK的配置
vim ~/.bashrc 在文件末尾添加如图两行代码 写下来方便复制export NDKROOT=/usr/ndk/android-ndk-r12bexport PATH=$NDKROOT:$PAT ...
- read pread write pwrite open
http://stackoverflow.com/questions/7592822/what-are-the-advantages-of-pwrite-and-pread-over-fwrite-a ...
- Cocos2d-x CCScale9Sprite 用法
1.创建方式有三种: (1).直接创建 auto blocks = Scale9Sprite::create("blocks9.png", Rect(0, 0, 96, 96), ...