rem*_*rem 5 c# silverlight wpf custom-controls visualstatemanager
是否可以在代码中以编程方式将新添加VisualState到CustomControl TemplateVisualStateManager?
例如,我可以在设计时手动将此 XAML 添加到 CustomControl 模板:
<VisualState x:Name="First">
<Storyboard>
<ColorAnimation Duration="0:0:0"
Storyboard.TargetName="SBorder"
Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)" To="Red" />
</Storyboard>
</VisualState>
Run Code Online (Sandbox Code Playgroud)
但是我怎么能VisualState在运行时添加一个新的呢?
我认为这是可行的,但绝不是容易的......
这应该有效:
Grid grid = this.Template.FindName("RootElement", this) as Grid;
(VisualStateManager.GetVisualStateGroups(grid)).Add(new VisualStateGroup() { /* the code for your visualstategroup here */ });
Run Code Online (Sandbox Code Playgroud)
(您需要根据模板根元素名称的类型以及设置视觉状态管理器的位置进行调整,但总而言之,这都是可行的。
另外,这添加了一个新的 VisualStateGroup,而不仅仅是一个 VisualState。如果要将 VisualState 添加到现有的 VisualStateGroup,则必须首先从集合中获取该组,但这是常见的“从集合中获取元素”内容
基本上:
VisualStateManager.GetVisualStateGroups()静态方法获取当前的visualStateGroups希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
3051 次 |
| 最近记录: |