0

我试图更改按钮动态按下背景。但我无法从背后的代码访问此属性。 根据按钮的基本风格,我尝试获取ControlTemplate(通过TemplateProperty),但没有方法从它检索它包含的网格(RootGrid)。 所以我试图让VisualStateGroup这样的:UWP - 动态更改按钮VisualState

var visualStateGroups = VisualStateManager.GetVisualStateGroups(testButton); 

但这返回null。

感谢您的任何帮助。

塞缪尔

回答

1

要检索包含在ButtonGrid,则可以使用方法:

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; 
    } 

然后使用方法是这样的:

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

这工作得很好。谢谢你的帮助 :-) –