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

這工作得很好。謝謝你的幫助 :-) –