我有一个 Silverlight 4 应用程序,其中我在 XAML 中定义了一些状态,并使用VisualStateManager.GoToState(this, "stateName", false)
它按预期工作。
然而,问题是一些状态的属性绑定到 UI,因此用户可以自定义诸如颜色之类的东西。在该状态下(比如说状态 A)可以做到这一点。直到我更改为另一个状态,然后返回到状态 A,这些更改才会反映出来。问题不在于从 UI 到底层属性的绑定(它们具有预期值),而是需要刷新状态 - 或至少这是我的结论。
起初我只是尝试VisualStateManager.GoToState(this, "StateA", false)
但发现“如果控件已经处于 stateName 状态,则 GoToState 不执行任何操作返回 true”。
然后我尝试了但没有成功,尽管它确实不是一个好的解决方案:
VisualStateManager.GoToState(this, "StateB", false);
VisualStateManager.GoToState(this, "StateA", false);
有谁知道我如何强制刷新或解决方法?
更新:
当依赖属性发生变化时,我设法让它结合下面的答案和使用下面的代码工作。并且似乎考虑了从 UI 设置的属性的新值Storyboard.Stop()
。Storyboard.Begin()
if (VisualStateManager.GoToState(this, "StateA", false))
{
VisualState stateA = (VisualState)VisualStateGroup.States[0];
stateA.Storyboard.Stop();
stateA.Storyboard.Begin();
}