【问题标题】:UWP - Change Button VisualState dynamicallyUWP - 动态更改按钮 VisualState
【发布时间】:2017-03-13 08:35:36
【问题描述】:

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

var visualStateGroups = VisualStateManager.GetVisualStateGroups(testButton);

但这会返回 null。

感谢您的帮助。

塞缪尔

【问题讨论】:

    标签: uwp code-behind visualstatemanager visualstates visualstategroup


    【解决方案1】:

    要检索Button中包含的Grid,可以使用方法:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      • 2019-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多