- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已将 silverlight TemplatedControl 移植到 WPF,虽然它的行为基本相同,但动画不再有效。
当我调用 VisualStateManager.GoToState()
时,它返回 false。为了手动强制执行此操作,我听从了其他人的建议并按名称查找视觉状态组,并强制 Storyboard运行:
foreach (VisualStateGroup vsg in VisualStateManager.GetVisualStateGroups(part_LayoutRoot))
{
VisualState vs = vsg.States.Cast<VisualState>().FirstOrDefault(o => o.Name == visualState);
if (vs == null)
throw new ApplicationException("No visual state found with name: " + visualState);
vs.Storyboard.Begin();
break;
}
但是这会引发异常不存在解析名称“PART_MyPart”的适用名称范围
当我调用 Storyboard.Begin()
时。
经过进一步调查,当调用 NameScope.GetNameScope()
时,VisualStateManager、视觉状态和 Storyboard都返回 null,因此我也尝试在代码中手动设置它们:
var nameScope = NameScope.GetNameScope(vs.Storyboard);
if (nameScope == null)
{
nameScope = NameScope.GetNameScope(part_LayoutRoot);
NameScope.SetNameScope(vsg, nameScope);
NameScope.SetNameScope(vs, nameScope);
NameScope.SetNameScope(vs.Storyboard, nameScope);
}
但是,异常继续出现,我想不出为什么。这在 silverlight 中完全符合预期。
谁能阐明为什么 silverlight 和 WPF 之间在 NameScope 方面会有不同的行为?
谢谢
最佳答案
在您的控件模板中检索命名元素并调用 storyboard.Begin(_retrievedElement)
而不仅仅是 storyboard.Begin()
来解决“No applicable name scope”问题。在这种情况下,传递的框架元素的名称范围将应用于 Storyboard。参见 http://msdn.microsoft.com/en-us/library/system.windows.media.animation.storyboard.begin.aspx有关此方法的不同重载的更多信息。
不幸的是,我无法重构为什么 Visual States Manager 不适用于您的控件。
更新:我可能已经明白为什么您的控件模板在 Silverlight 中有效,但在 WPF 中无效。下一个答案中的详细信息。
关于c# - 无法转换到 VisualState - "No applicable name scope",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14231518/
我观看了BUILD事件中的“从小屏幕到大屏幕:使用XAML构建通用Windows应用程序体验” session 。 http://channel9.msdn.com/Events/Build/2015
如何根据 WP7 上的属性值更改 VisualState? 我尝试使用 MVVM 模式,当我的模型加载时,我希望我的 View 转到特定的 VisualState。 在 Silverlight 中,我
是否可以在 CodeBehind 中定义(而不是切换)VisualStates? 我正在创建一个 Adorner,它在 OnRender 中绘制一些矩形。我想做的是通过属性 IsMouseOver 更
在 AdaptiveTrigger 中使用 MinWindowWidth,我可以更改背景颜色,但无法应用比例变换。
我很难理解如何正确使用 UWP VisualStateManager。我定义了一个包含一些简单视觉状态的 UserControl,这是 XAML:
我正在尝试了解 WPF 中的 VisualState。我能够在 WPF 中创建一个简单的 VisualState。但问题是我如何将相同的 VisualState 应用于其他控件。 这是我的示例 Vis
我正在尝试写一个 VisualState适用于我在 Windows 10 下的新通用应用程序。 根据有关 VisualState.StateTriggers 的文档, 您可以将多个触发器添加到视觉状态
如果我从控件模板中定义 VisualStates,是否可以从 Storyboard 中更改模板化控件本身的属性?这是一个简单的例子:
我收到以下错误 不明确的类型引用。名为“VisualState”的类型至少出现在两个命名空间“System.Windows”和“System.Windows”中。考虑调整程序集 XmlnsDefini
在 WPF 中使用 VisualStateManager 时,可能需要在控件初始化时转换到 VisualState。据我所知,没有办法在 Xaml 中声明初始状态,在初始化之后,您只能在代码中转换到所
我正在使用 wpfToolkit 3.5 作为引用程序集在 VS2010 中构建应用程序。 我尝试从 ExpressionBlend 4 添加一些 VisualStates,但在尝试构建项目时出现以下
我正在尝试制作自己的验证文本框并使用 VisualStateManager 来更改字段的状态。如果我可以读取文本框的当前状态,那将非常有帮助。我找不到如何做到这一点。有人知道如何获取元素(TextBo
我试图在单击按钮时更改按钮的字体颜色。我尝试了很多不同的东西,但没有一个奏效。这是我尝试过的最新方法,我认为应该是答案,但它不起作用。有人可以帮忙吗? PointerOver 工作正常,但在单击按钮时
以下错误是什么? Ambiguous type reference. A type named 'VisualState' occurs in at least two namespaces, 'Sy
我正在编写一个继承自 RadioButton 的控件并没有做任何比显示图像和隐藏默认圆圈更壮观的事情。 我无法找到的一件事是我是否必须重新实现所有 VisualStates再次在我的 ControlT
我有三个 VisualState,每个都有动画,我想将它们链接在一起。我希望在最后一个状态完成后开始一个状态。我如何在 Silverlight 中执行此操作而不使用大量难闻的代码? 最佳答案 您是否尝
这个问题在这里已经有了答案: Binding [VisualStateManager] view state to a MVVM viewmodel? (5 个答案) 关闭 7 年前。 我知道这个问
有人可以为以下等效的 C# 提供 C++ 示例吗? VisualStateManager.GoToState(this, "statename", true); 我不懂 C++,正在为另一个小组转换一
我在 Expression Blend 中定义了以下两种状态。我一直在努力关注 this指南,但当我需要有关如何以及何时更改状态的信息时,我觉得它让我悬而未决。 根据指南,我要将行为(我假设为“Got
我创建了许多按钮,它们在我的 Windows Phone 项目中使用相同的 VisualStateManager、VisualStateGroup 和 VisualState。然后,我想将它们全部重用
我是一名优秀的程序员,十分优秀!