自定义控件上的可视化状态管理器

发布于 2024-08-17 12:13:29 字数 295 浏览 4 评论 0原文

我构建了一个扩展内容控制的自定义控件。在这个模型中,我有一个工作正常的零件和状态模型。

然后我使用它作为我的 xaml 的根(将代码放在 Blend 的模板文件夹中)

一切正常,我可以打开一个新的“DaveControl”并获得我想要的功能。

但是,如果我然后在此处添加一些视觉状态,例如alertOnScreen并尝试使用视觉状态管理器,则它不起作用。

事实上,没有列出任何州。

不过 SL3 GotoVisualState 中的行为工作正常!

如何让视觉状态在代码中发挥作用?

I have built a custom control that extends content control. Within this I have a parts and states model that is working fine.

I then use this as the root of my xaml(placing the code in the templates folder in Blend)

Everything works fine, I can open a new 'DaveControl' and get the functionality that I want.

However, If I then add make some visual states here, such as alertOnScreen and try to use the visualstatemanager it doesn't work.

infact there are no states listed.

The Behaviour in SL3 GotoVisualState works fine though!

How can I get the visual state to work in code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

碍人泪离人颜 2024-08-24 12:13:29

所以解决方案如下:使用扩展视觉状态管理器!

ExtendedVisualStateManager.GoToElementState(this.LayoutRoot as FrameworkElement, "OffScreen", true);

这是有效的,因为它需要一个框架元素......除其他外。
VisualStateManager.GoToState 无法在 Window 上运行的解决方法

So the solution is the following: Use Extended Visual State Manager!

ExtendedVisualStateManager.GoToElementState(this.LayoutRoot as FrameworkElement, "OffScreen", true);

This works because it takes a Framework Element... amongst other things.
Workaround for VisualStateManager.GoToState not working on Window

昵称有卵用 2024-08-24 12:13:29

您是否已将一组可用状态添加为类上的一组 TemplateVisualState 属性? Blend 使用这些来配置其可用状态列表。

你的类通常应该是这样的:-

[TemplateVisualState(Name = "MyGroup1State1", GroupName = "MyGroup1")]
[TemplateVisualState(Name = "MyGroup1State2", GroupName = "MyGroup1")]
[TemplateVisualState(Name = "MyGroup2State1", GroupName = "MyGroup2")]
[TemplateVisualState(Name = "MyGroup2State2", GroupName = "MyGroup2")]
[TemplatePart(...)]
[TemplatePart(...)]
public class MyControl : ContentControl

Have you added the set of available states as a set of TemplateVisualState attributes on the class? Blend uses these to configure its list of available states.

Your class should generally look like this:-

[TemplateVisualState(Name = "MyGroup1State1", GroupName = "MyGroup1")]
[TemplateVisualState(Name = "MyGroup1State2", GroupName = "MyGroup1")]
[TemplateVisualState(Name = "MyGroup2State1", GroupName = "MyGroup2")]
[TemplateVisualState(Name = "MyGroup2State2", GroupName = "MyGroup2")]
[TemplatePart(...)]
[TemplatePart(...)]
public class MyControl : ContentControl
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文