要获取wpf Mainwindow下某个控件,在其它地方拿不到窗口句柄,没办法获取指定控件内容。通过VisualTreeHelper可以遍历集合名称或类型查询功能。
/// <summary>
/// 搜索指定名称的子元素
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <param name="name"></param>
/// <returns></returns>
public static T FindChild<T>(DependencyObject obj, string name) where T : FrameworkElement
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child is T && (child as T).Name.Equals(name))
return (T)child;
else
{
T childOfChild = FindChild<T>(child, name);
if (childOfChild != null)
return childOfChild;
}
}
return null;
}
下面是调用实例代码:
var textbox = FindChild<TextBox>(Application.Current.MainWindow, "myTextBoxName");