使用Blend 4处理WPF时,您可以通过从效果的下拉列表中进行选择,将动画添加到visual state manager中的可视状态更改中-这很容易,而且效果非常好。
然而,使用Blend for Visual Studio11 Beta创建Metro风格的应用程序时,当我在VSM中单击add transition animation to visual state change时,它直接进入故事板录制模式。有人知道如何使视觉状态变化动画化吗??(例如:我想要按钮在单击时的颜色变化以淡入)。或者我如何通过故事板创建相同的动画??
感谢所有的回复。谢谢!
我只有C/C++的经验,刚刚转到C#和WPF。我想创建一个动画来移动组件(例如图像),但我不知道为什么下面的操作是非法的:
ThicknessAnimation a = new ThicknessAnimation(...);
Image1.BeginAnimation(Image1.Margin, a); // illegal. Image.Margin illegal too
似乎就是不能在这里使用边距。当然,手动创建计时器和创建边距的厚度对象也可以,但这将是乏味的,如果动画是可能的,它将更优雅。
这里需要故事板吗?我听说有些人说创建一个故事板,你可以使用边距属性,但我根本不知道故事板,
是否有一种快速的方法来确定是否正在处理WPF控件中的任何动画。
我有一个树视图,我在这里动画树节点的扩展,我想等待直到所有这些动画完成,然后滚动重点项目进入视图。我不喜欢独立跟踪我所有故事板的进度。
理想情况下,我的伪代码应该如下所示:
myTreeView.ExpandAll(); // I have written this part
while (myTreeView.IsAnimating()) // I need the 'IsAnimating' property or extension method
{
// wait
}
selectedTreevi
这可能是一个简单的问题,但我如何知道什么时候完成了故事板动画?我使用的是.Net 3.0,所以这也许就是为什么,但是在我的其他项目(.net 4)中,有一个简单的已完成的事件我可以处理。在WPF中用.net 3.0做这件事有什么方法?谢谢
编辑回应评论:我想错误在其他地方。我无法从代码背后访问我的故事板。
//storyboardBounce does not exist error is thrown
storyboardBounce.Completed += new EventHandler(Storyboard_Completed);
但是,如果我将触发器分配给混合中的按钮,则可以
有没有什么简单的方法可以正常运行一个基于WPF故事板的动画,然后反向运行它,让所有的东西恢复到原来的状态?
最好,我想以编程的方式来实现:
Storyboard sb=new Storyboard();
...
sb.Begin();
// Now how to do I run sb in reverse, to move things to where they were
// before the sb started?
例如,您可能有一个动画,其中椭圆从左向右移动,而您希望在结束时将其移回开始处的左侧:
这看起来应该是不需要动脑筋的,但我不能让WPF故事板暂停。我调用Pause,什么也没有发生--它一直保持动画。
这是一个重现的例子:一个可以动态显示其宽度的按钮。如果单击该按钮,则会在故事板上调用Pause。我希望,只要我单击按钮,它的宽度就会停止变化;相反,它的宽度会保持动画效果,就好像我从未调用过Pause一样。
NameScope.SetNameScope(this, new NameScope());
var storyboard = new Storyboard();
var button = new Button { Content = "Pause", Name
我在我的代码中有一个WPF故事板,它与几个链接在一起的颜色动画一起运行。它工作得很好,但在某些情况下,我希望能够在中间开始动画(例如colorAnimation2中的5秒),而不是总是从开头开始。我该怎么做呢?
StoryBoard storyBoard = new StoryBoard;
// each animation runs for 10 seconds and starts 10 seconds after the previous one.
storyboard.Children.Add(colorAnimation1);
storyboard.Children.Add(colo
我有一个属性:
double _X;
public double X
{
get {
this.Title = _X.ToString();
return _X;
}
set {
_X = value;
this.Title = _X.ToString(); // !!!! this line does not execute when property changes from storyboard