这是一个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不会将它的颜色改为红色?
答案 0 :(得分:0)
是的,VSM应该在网格中,现在一切都会正常工作。
答案 1 :(得分:0)
我遇到了同样的问题并在官方文件的帮助下解决了这个问题: UWP:VisualStateManager Class
我要从文件中选择一句话:
控件作者或应用程序开发人员添加VisualStateGroup对象元素 使用,到XAML中控件模板定义的根元素 VisualStateManager.VisualStateGroups附加属性。
所以,我认为你的 VisualStateManager 不起作用的原因是你的VisualStateManager的部分应该放入英雄元素(除了Page,我猜)范围之外(也许它是网格或者也许是它的RelativePanel或者其他)