在VisualStateManager&下找不到GoToElementState VisualStateManager.GoToState返回false

时间:2014-03-08 18:44:03

标签: wpf xaml windows-phone-8

我正在尝试使用动画(对于Windows 8电话应用程序)

VisualStateManager 

但是当我做的时候

VisualStateManager.GoToState

它返回false。我已正确定义了所有状态和网格。我在主网格布局下有一个名为“ContentPanel”的网格布局。在“ContentPanel”下,我有这个动画必须工作的矩形。我使用Code Behind动态创建了所有这些矩形。我已经在相同的代码中创建了所有状态和动画,并尝试运行上面提到的这一行。

我用google搜索并找到了使用GoToElementState()方法的不同解决方案。但我没有在我使用的类VisualStateManager类中看到此方法。我知道这是一种静态方法,但它并没有出现在建议中。

我也尝试使用ExtendedVisualStateManager类。即便如此。

最重要的是,我不确定为什么我的GoToState无效。如果我将主元素作为网格(作为LayoutRoot),则此动画正在运行。我使用了以下行

VisualStateManager.GetVisualStateGroups(this.ContentPanel); 

// ContentPanel是布局的名称  我在哪里有其他矩形 动画必须绑定。然后我用这个命令..

VisualStateManager.GoToState(this, "stateName", true) // Returns false. Nothing happens when this is executed. Can any one please suggest me with the right implementation of this. 

谢谢,

Sri Tej N。

1 个答案:

答案 0 :(得分:0)

如果您的视觉状态位于Grid之下,那么

VisualStateManager.GoToState(this, "stateName", true)

无法使用,因为this很可能是Page,但不直接包含视觉状态

VisualStateManager.GoToState(this.YourGrid, "stateName", true)

无效,因为GoToState的第一个参数需要是Control的类型 - Grid不会从Control继承。

你需要使用这个。

ExtendedVisualStateManager.GoToElementState(this.YourGrid, "stateName", true)