J'utilise cette méthode pour énumérer tous les boutons d'un usercontrol:VisualTreeHelper ne trouve pas le contrôle dans DataGridTemplateColumn.CellTemplate
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();
....
}
Il fonctionne bien à l'exception des boutons à l'intérieur DataGridTemplateColumn.CellTemplate
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<Button x:Name="Btn_Edit"
Click="Btn_EditTest_Click"/>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
'VisualTreeHelper.GetChild' faire Il ne semble pas être capable de trouver les contrôles dans les éléments de DataGrid.
Devrait fonctionner. Qu'est-ce que "page" et où appelez-vous la méthode? – mm8
'page' est un UserControl, la méthode est appelée dans la méthode load (TestPage_Loaded), Elle-même appelée dans le constructeur de 'page' (this.Loaded + = TestPage_Loaded;) Mais je n'ai aucun problème pour le bouton en dehors de la grille de données! ! – Alematt
C'est incompréhensible ... s'il vous plaît poster votre code. Le DataGrid est-il situé dans la "page"? – mm8