Aka*_*ava 16 visualstatemanager silverlight-3.0
我知道我们可以使用
VisualStateManager.GoToState(this,"SomeState1",true);
Run Code Online (Sandbox Code Playgroud)
进入SomeState1,但现在如何回到基本状态,就像没有状态一样,加载控件的状态.
VisualStateManager.GoToState(this,"base",true);
// OR
VisualStateManager.GoToState(this,"",true);
// OR
VisualStateManager.GoToState(this,null,true);
Run Code Online (Sandbox Code Playgroud)
问题是如果没有这种方式返回到初始状态或基本状态,那么我将不得不始终创建第一个状态,并在构造函数中转到控制开始时的第一个状态.
我没有找到任何文档,所以我尝试所有组合,但没有找到任何工作..
Jac*_*eja 20
正常!=基地.
Base是应用任何视觉状态之前(即VSM处于活动状态之前)的控件的初始状态.
如果你在Expression博客上阅读这篇文章,我在这里有一个很好的描述:
...当您创建自己的模板化控件或UserControl时,您应该在每个状态组中定义"默认"状态.让控件在初始化时进入那些"默认"状态,并在抑制转换的情况下执行此操作,以便无延迟地发生.一旦它处于状态图上,控件就可以进行状态转换,现在您可以实现触发状态图中转换的事件处理程序.
从简短的VSM源代码看,似乎没有办法退出VSM并回到原来的Base状态......所以是的,你需要一个"正常"状态.:(
我也觉得有点烦人的是VSM状态不能轻易删除,尽管上面的解决方案确实有意义.也许他们将来会解决这个问题.
Fyo*_*kin 16
为此,您必须首先定义 "基本"状态.
如果你定义一个不包含故事板的可视状态,那么这个状态实际上将等于"基本"状态 - 加载控件的状态.
<VisualStateGroup x:Name="TheGroup">
<VisualState x:Name="SomeState1">
<Storyboard>
...
</Storyboard>
</VisualState>
<VisualState x:Name="BaseState" /> <!-- Note: the VisualState tag is empty -->
</VisualStateGroup>
Run Code Online (Sandbox Code Playgroud)
然后切换到该状态:
VisualStateManager.GoToState( this, "BaseState", true );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6863 次 |
| 最近记录: |