好久没写博客了,关于WPF的东西网上有很多 知道与不知道的网上都一大堆,现在做一个项目遇到一个问题 如何获取模版里面的值到CS文件去,如果是用MVVM去写大不了可以去VIEWMODEL里去封装调用。但有些功能就必须写在事件里,那么问题就来了 在模版里的控件如何去找了!我想过用反射 很麻烦后来跟前辈们一起想到了两个方法 贴出来 让各位参考 然后提出不足的地方
private void btnSearch_Click(object sender, RoutedEventArgs e)
{
TextBox chkAll = FindFirstVisualChild<TextBox>(grid, "sss");
}
public static T FindFirstVisualChild<T>(DependencyObject obj, string childName) where T : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child is T && child.GetValue(FrameworkElement.NameProperty).ToString() == childName)
{
return (T)child;
}
else
{
T childOfChild = FindFirstVisualChild<T>(child, childName);
if (childOfChild != null)
{
return childOfChild;
}
}
}
return null;
}
如果有更好的办法可以提出来一起分享!