I use this method to list all the buttons of a usercontrol:
private static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
{
if (depObj != null)
{
int NbChild = VisualTreeHelper.GetChildrenCount(depObj);
for (int i = 0; i < NbChild; i++)
{
DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
if (child != null && child is T)
{
yield return (T)child;
}
foreach (T childNiv2 in FindVisualChildren<T>(child))
{
yield return childNiv2;
}
}
}
}
public static void ImplementShortCut(ContentControl page)
{
List<Button> ListButton = new List<Button>();
ListButton = FindVisualChildren<Button>(page).ToList();
....
}
It's working well except for buttons inside DataGridTemplateColumn.CellTemplate
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<Button x:Name="Btn_Edit"
Click="Btn_EditTest_Click"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
'VisualTreeHelper.GetChild' does not seem to be able to find the controls in datagrid items.