问题标签 [visualstatemanager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1465 浏览

wpf - Silverlight 和 WPF:ControlTemplate 中的 VisualStateManager 不起作用

所以,大家好。

我已经制作了两个测试程序来创建自己的控件。一个在 Silverlight 中,一个在 WPF 中。我创建了一种 RangeSlider。这个滑块当然有两个方向,水平和垂直。首先,我使用了两种不同的技术来创建我的 RangeSlider。在 WPF 中我使用了触发器,在 Silverlight 中(你知道没有触发器)我在 CodeBehind.This 运行中更改了水平和垂直模板的可见性。

现在:我正在尝试对 Silverlight 和 WPF 使用一种技术。因此我使用 VisualStateManager。

我有一个定义两个滑块的模板(一个用于左值,另一个用于右值)。简化后的重要值如下所示:

此外,还有 VSM 可以在水平和垂直外观之间切换:

这仍然运行。

正如您在代码序列中看到的,Slider 的视觉效果是由模板定义的,这里是 Horizo​​ntalSliderTemplate(我再次简化代码):

实际上还有一个 VerticalSliderTemplate。但我想将 ControlTemplate 合并到一个模板中并使用 VSM。在这里,我们来解决我的问题:

我没有在“内部”ControlTemplate 中运行 VSM。它与正在运行的 VSM-Part 的代码几乎相同,只是更改了 TargetName。我不知道如何调试 GoToState 上正在运行的内容,但我相信模板中的 VSM 永远不会找到并且永远不会从那里执行。

我可以想象只是缺少一点细节,但我“只见树木不见森林”。也许关于模板或 VSM 有一件重要的事情我不知道,我偏离了轨道。或者我是否必须从外部触发“内部”VSM,或者有可能从“外部 VSM”访问元素?还是在“内部”模板中无法访问 VSM?

我希望我能很好地解释我的问题,并且有人知道我可以寻找的解决方案或关键字。只是在 google 中输入关键字 VSM、ControlTemplate、Storyboard 等并没有帮助。

提前致谢。

0 投票
1 回答
498 浏览

.net - VisualStateManager 似乎不适用于 .NET 4.0 (wpf)

我想要覆盖默认按钮样式,以便只有一个图像按钮,没有边框和所有这些东西。

这一切都很好,但是虽然我在我的 XAML 样式中定义了 VisualStateManager,但无法用鼠标按下按钮。事实上,它什么也没做。

我做错了什么?

0 投票
2 回答
677 浏览

wpf - 使用 WPF 4 将视觉状态添加到嵌套控件

我想知道是否可以将视觉状态(在 WPF 4 中)应用于嵌套控件。我有一个堆栈面板,其中包含一些我想根据变化状态更改的元素。

当我尝试使用此代码更改整个堆栈面板的状态时

什么也没有发生:名为 lblPremioRaggiunto 的嵌套文本块不会改变他的颜色。我可以以这种方式应用视觉状态吗?

谢谢,达尼洛。

0 投票
1 回答
1433 浏览

wpf - WPF VisualStateManager - 如何在模板化子对象中设置动画属性

我有一个 UserControl,其中包含一个带有自定义 ItemsPanel 的 ItemsControl,具有一个名为“MaxColumns”的依赖项属性。我想定义一个 VisualState(在 UserControl 级别),它可以为自定义面板上的“MaxColumns”属性设置动画。

本质上,XAML 类似于:

但是,我一生都无法弄清楚动画的正确语法是什么?如果我使用上面显示的语法,则会收到错误消息:“'ItemsPanel' 属性未指向路径 '(0).(1)' 中的 DependencyObject”。我假设这是因为它在技术上指向 ItemsPanelTemplate?

如果我直接在 Storyboard.TargetName 属性中引用“MyCoolPanel”,则会收到有关名称范围的错误(可能是因为“MyCoolPanel”不在 LayoutRoot 的名称范围内)。我不知道是否有办法限定“TargetName”中的名称范围?

有人对此有解决方案吗?在不诉诸自定义附加属性的情况下,这似乎是可行?我的意思是,我不反对附加属性,但我觉得您应该能够直接在 XAML 中执行此操作?

0 投票
2 回答
2538 浏览

c# - Silverlight:VisualStateManager.GetVisualStateGroups 没有,我怎样才能得到它们?

我已经尝试VisualStateManager.GetVisualStateGroups在我的自定义行为的OnAttached覆盖中使用,以及AssociatedObject.Loaded在该行为中添加到事件的事件处理程序中使用。两次我都得到一个空列表。

是否有另一种方法来获取为控件定义的视觉状态组,或者我应该附加到另一个事件处理程序?

被问到,是的,控件有VisualStateGroupsVisualStates

0 投票
2 回答
2073 浏览

c# - 从 XAML 开始 VisualState 转换

在用户控件(或其他)中,我们都知道可以在代码中使用 VisualStateManger 来启动转换或动画,如下所示:

但是,似乎很少或根本没有关于从 XAML 触发这些类型的动画的信息。是否可以定义可以提供与上面列出的代码等效的行为的 DataTemplate 或 Trigger?

0 投票
2 回答
130 浏览

c# - Separate event in control

I'm wondering if I can have a individual component in a control have an event. For example, I've created my own control, and with VisualStateManager I'm able to handle several events that fire for the control as a whole, I'd like just my togglebutton in the controlto fire the mouseover event. Currently any area of the control that the mouse is over fires the mouseover which ruins the coloranimation effect i'm trying to get, I want the coloranimation to only happen when the toggle button has a mouse over, my control has a contentpresent allowing for other content, i don't want that piece to fire the event.

Example of what i'm talking about below in generic.xaml file.

0 投票
2 回答
3093 浏览

c# - VisualStateManager 无法在 UserControl 上启动动画

我正在尝试在 Windows Phone 7 Silverlight 项目中使用 VisualStateManager 在 UserControl 上启动动画,但它不起作用。GoToState 只是继续返回 false。

该代码由一个 VisualState 行为组成,当数据上下文上的状态属性发生更改时运行 GoToState,当单击 UI 中的按钮时会发生这种情况:

我究竟做错了什么?

XAML:

C#:

0 投票
0 回答
110 浏览

.net - VisualStateManager:当状态 B 处于活动状态时,如何停止执行状态 A?

一旦鼠标悬停在按钮上,我就成功地增加了按钮内图像的比例。

现在,如果我要对 ToggleButton 使用相同的概念,情况将更具挑战性。

当切换按钮处于“选中”状态时,我不希望鼠标悬停状态触发其缩放动画,但仍应触发颜色动画。

我怎么可能做到这一点?

非常感谢,

0 投票
2 回答
8328 浏览

wpf - 在 XAML 中,VisualStateManager 的正确 XML 命名空间是什么?

我正在尝试重新设计一些 ToggleButtons。显然我不能简单地将背景设置为新颜色,因为有一个“控制模板”提供了切换按钮的视觉行为。所以我需要做的是在 XAML 中为 ToggleButton 指定一个替换“ControlTemplate”,它提供不同的视觉行为,除了简单的背景颜色。
Q1。它是否正确?


我想从我从这里抓取的 ToggleButton 的“默认”控件模板开始,然后对其进行修改。实际上,我猜这是 Silverlight 的默认 ControlTemplate,而且我没有使用 Silverlight,我使用的是 WPF。但是... WPF 的相应文档页面不包含默认控件模板的规范。它提供了“一个”ControlTemplate,这不是我想要的。
Q2。我不确定我使用 Silverlight 的东西是否重要。可以?


在 Silverlight 示例中,有一个 vsm 的 XML 命名空间前缀应用于 VisualStateManager。显然 xml 命名空间是

...但在其他地方我读到这个 ​​XML 命名空间“不再需要”。

这一切都非常令人困惑。

在 Googlespace 中,有对我之前接触过的称为“WPF 工具包”的引用 -在 WPF V4 发布之前,我将它用于自动完成文本框。我猜想一些 WPF Toolkit 的东西被纳入 WPF for .NET v4.0,这就是我不再需要指定 WPF 工具包的原因。
第三季度。如果有人能证实这种理解,我将不胜感激。


好的,现在从 ToggleButton 的“默认”ControlTemplate 开始,我的第一步是在进行任何更改之前对其进行编译。它不编译,失败

c:\dev...\ToggleButtonStyle1.xaml(23,14): 错误 MC3074: XML 命名空间中不存在标记“VisualStateManager.VisualStateGroups” http://schemas.microsoft.com/winfx/2006/xaml/演示文稿'。第 23 行位置 14。

够清楚。然后我查看了在 XAML 中指定 VisualStateManager 的文档。令人困惑的是,它指定了两个 xml 命名空间,其中一个是我实际使用的。

在此处输入图像描述

Q4嗯,我应该使用哪个?其中之一,我确实使用过,但它没有用。该文档完全不清楚指定两个 XML 名称空间的含义。(砍掉他们的头!)

我在项目文件中有对 PresentationFramework.dll 的引用:

我在这里没有使用 Visual Studio;我正在使用文本编辑器。我想了解它是如何工作的,而不是要按什么按钮。

感谢您提供的任何帮助。


只是一个侧面评论 - 这一切似乎非常非常复杂。我想做的就是在打开时更改 ToggleButton 的颜色。真的不应该这么复杂。