WPF 获取DataGrid的RowDetailsTemplate的控件
注意有时候是获取不到的,应该与渲染时机有关系。本例中是在DataGrid的RowDetailsVisibilityChanged事件获取的。
var row=(DataGridRow)(dataGrid.ItemContainerGenerator.ContainerFromItem(dataGrid.Items.CurrentItem));
FrameworkElement tb = GetTemplateChildByName(row, "tb");
public static FrameworkElement GetTemplateChildByName(DependencyObject parent, string name)
{
int childnum = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < childnum; i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
if (child is FrameworkElement && ((FrameworkElement)child).Name == name)
{
return child as FrameworkElement;
}
else
{
var s = GetTemplateChildByName(child, name);
if (s != null)
return s;
}
}
return null;
}