WPF 查找控件的所有子控件
Posted 挖煤小弟的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 查找控件的所有子控件相关的知识,希望对你有一定的参考价值。
/// <summary> /// 查找子控件 /// </summary> /// <typeparam name="T">控件类型</typeparam> /// <param name="parent">父控件依赖对象</param> /// <param name="lstT">子控件列表</param> public static void FindVisualChild<T>(DependencyObject parent, ref List<T> lstT) where T : DependencyObject { if (parent != null) { T child = default(T); int numVisuals = VisualTreeHelper.GetChildrenCount(parent); for (int i = 0; i < numVisuals; i++) { Visual v = (Visual)VisualTreeHelper.GetChild(parent, i); child = v as T; if (child != null) { lstT.Add(child); } FindVisualChild<T>(v, ref lstT); } } }
在DataGrid中查找选定行中的子控件使用实例:
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { DataGridRow currentRow = (DataGridRow)dgdRel.ItemContainerGenerator.ContainerFromIndex(dgdRel.SelectedIndex); //获取当前行 if (currentRow != null) { List<Control> lstControl = new List<Control>(); FormDispose.FindVisualChild<Control>(currentRow, ref lstControl); //获取当前行内所有的控件 if (lstControl != null) { //子控件的处理代码 } } }
以上是关于WPF 查找控件的所有子控件的主要内容,如果未能解决你的问题,请参考以下文章
WPF 查找ListBox等DataTemplate下的子控件