0

J'essaye de changer le bouton Pressé dynamiquement l'arrière-plan. Mais je suis incapable d'accéder à cette propriété à partir du code derrière. Selon le style de base du bouton, j'ai essayé d'obtenir le ControlTemplate (par le TemplateProperty) mais il n'y a pas de méthode pour récupérer la grille (RootGrid) qu'il contient. Alors j'ai essayé de VisualStateGroup comme ceci:UWP - Modifier le bouton VisualState dynamiquement

var visualStateGroups = VisualStateManager.GetVisualStateGroups(testButton); 

Mais retourne la valeur null.

Merci pour toute aide.

Samuel

Répondre

1

Pour récupérer le Grid contenu dans le Button, vous pouvez utiliser la méthode:

private TChild FindVisualChild<TChild>(DependencyObject obj)where TChild : DependencyObject 
    { 
     for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++) 
     { 
      DependencyObject child = VisualTreeHelper.GetChild(obj, i); 
      if (child != null && child is TChild) 
       return (TChild)child; 
      else 
      { 
       TChild childOfChild = FindVisualChild<TChild>(child); 
       if (childOfChild != null) 
        return childOfChild; 
      } 
     } 
     return null; 
    } 

Ensuite, utilisez la méthode comme ceci:

var grid = FindVisualChild<Grid>(this.test); 
var group = VisualStateManager.GetVisualStateGroups(grid)[0]; 
+0

Cela fonctionne très bien. Merci de votre aide :-) –