我有一个 Silverlight 4 应用程序,其中有一些在 XAML 中定义的状态,并使用VisualStateManager.GoToState(this, "stateName", false)
其按预期工作。
然而问题是,状态的某些属性绑定到 UI,因此用户可以自定义颜色等内容。当处于该状态(假设状态 A)时可以执行此操作。直到我更改为另一个状态,然后返回状态 A,更改才会反映出来。问题不在于从 UI 到底层属性的绑定(它们具有预期值),而在于状态需要刷新 - 或者至少这是我的结论。
起初我只是尝试过VisualStateManager.GoToState(this, "StateA", false)
但发现“如果控件已经处于 stateName 状态,则 GoToState 不采取任何操作返回 true” http://msdn.microsoft.com/en-us/library/system.windows.visualstatemanager.gotostate%28v=vs.95%29.aspx.
然后我尝试没有成功,尽管这确实不是一个好的解决方案:
VisualStateManager.GoToState(this, "StateB", false);
VisualStateManager.GoToState(this, "StateA", false);
有谁知道我如何强制刷新或解决方法?
UPDATE:我设法让它与下面的答案相结合,并在依赖属性更改时使用以下代码。这Storyboard.Stop()
and Storyboard.Begin()
似乎考虑了从 UI 设置的属性的新值。
if (VisualStateManager.GoToState(this, "StateA", false))
{
VisualState stateA = (VisualState)VisualStateGroup.States[0];
stateA.Storyboard.Stop();
stateA.Storyboard.Begin();
}