为什么VisualStateManager不工作?

时间:2014-11-06 09:40:04

标签: windows-runtime winrt-xaml

这是一个UserControl:

<Grid x:Name="LayoutRoot">
    <Border x:Name="Border1" Background="Green">
        <TextBlock Text="Hello, World!"></TextBlock>
    </Border>
</Grid>

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup >
        <VisualState x:Name="ExampleState">
            <Storyboard>
                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Border1">
                    <DiscreteObjectKeyFrame KeyTime="0" Value="Red">
                    </DiscreteObjectKeyFrame>
                </ObjectAnimationUsingKeyFrames>
            </Storyboard>
        </VisualState>
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

在代码隐藏的某个地方:

    public DialerView()
    {
        this.InitializeComponent();
        //LayoutRoot.DataContext = this;

        VisualStateManager.GoToState(this, "ExampleState", false);
    }

请你解释一下,为什么Border1不会将它的颜色改为红色?

2 个答案:

答案 0 :(得分:0)

是的,VSM应该在网格中,现在一切都会正常工作。

答案 1 :(得分:0)

我遇到了同样的问题并在官方文件的帮助下解决了这个问题: UWP:VisualStateManager Class

我要从文件中选择一句话:

  

控件作者或应用程序开发人员添加VisualStateGroup对象元素   使用,到XAML中控件模板定义的根元素   VisualStateManager.VisualStateGroups附加属性。

所以,我认为你的 VisualStateManager 不起作用的原因是你的VisualStateManager的部分应该放入英雄元素(除了Page,我猜)范围之外(也许它是网格或者也许是它的RelativePanel或者其他)