我无法弄清楚我在这里缺少什么。
问题在于:
考虑具有触发器的(控制|数据)模板,该触发器切换一些内部UI元素的可见性。例如。当IsReadOnly == true时显示TextBlock并在IsReadOnly == false时显示TextBox。
如果你在没有动画的情况下这样做,一切都很完美 - 一个或两个安装人员就可以完成这项工作。但是,如果你想要一部花哨的动画呢?然后,您将指定在EnterActions和ExitActions中启动哪些动画。
但问题是动画究竟应该做什么?修改宽度/高度似乎非常难看,因为WPF中的固定大小几乎总是错误的方式,而且它绝对不灵活。
到目前为止,我提出的最好的方法是在一定程度上修改MaxHeight / MaxWidth,这样可以提供更多的灵活性,但仍然看起来很残酷。
如何告诉WPF将元素的宽度/高度从0设置为“尽可能多”?
UPD:目前我为Opacity和RenderTransform设置了动画效果。只是有时候我希望看到动画在没有变形的情况下滑动的动画。这不是一个关键问题,但对我来说非常有趣。
答案 0 :(得分:3)
对于大多数动画,您应该使用渲染变换或不透明度或两者。我几乎从不使用任何其他东西。
要使文字“成长”,请为渲染变换的缩放设置动画。不要忘记中心点。
使用Expression Blend快速达到预期效果。
答案 1 :(得分:2)
结帐Transitionals Framework。这可能就是你所需要的。
答案 2 :(得分:1)
考虑使用Blend SDK的过渡效果。可以找到构建内部使用像素着色器的自定义TransitionControl的一个很好的解释here。
答案 3 :(得分:0)
我认为最好的选择是为不透明度设置动画:在TextBox淡入时使TextBlock淡出,反之亦然。