本文共 1605 字,大约阅读时间需要 5 分钟。
/// <summary>
/// WPF中查找元素的父元素 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="i_dp"></param> /// <returns></returns> public static T FindParent<T>(DependencyObject i_dp) where T : DependencyObject { DependencyObject dobj = (DependencyObject)VisualTreeHelper.GetParent(i_dp); if (dobj != null) { if (dobj is T) { return (T)dobj; } else { dobj = FindParent<T>(dobj); if (dobj != null && dobj is T) { return (T)dobj; } } } return null; }
/// <summary>
///WPF查找元素的子元素 /// </summary> /// <typeparam name="childItem"></typeparam> /// <param name="obj"></param> /// <returns></returns> private childItem FindVisualChild<childItem>(DependencyObject obj) where childItem : DependencyObject { for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); 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; }
//测试listView获取焦点后,将符合条件的的项选中
private void listView_GotFocus(object sender, RoutedEventArgs e)
{ DependencyObject dobj = e.OriginalSource as DependencyObject; if (null != dobj) { System.Windows.Controls.ListViewItem gvc = FindParent<System.Windows.Controls.ListViewItem>(dobj); if (gvc != null) { System.Windows.Controls.ListView listView = FindParent<System.Windows.Controls.ListView>(gvc); if (listView != null) { int index = 0; foreach (var lv in listView.ItemsSource) { if ((FTPFile)gvc.DataContext == lv) { listView.SelectedIndex = index; break; } index++; } }}
} }转载地址:http://jwwao.baihongyu.com/