WPF动画侧面菜单有三种尺寸/状态

时间:2015-04-12 16:53:14

标签: c# .net wpf

我需要在WPF中创建一个有三种尺寸的菜单。可见(文本和图标),小(图标)和折叠。我的想法是采用一个有两列的网格,一个用于菜单(左),一个用于我的主要内容(右)。然后我想通过按钮单击来设置左列宽度的动画(应该看起来像扩展器)。现在我的问题是将列宽设置为Auto以显示可见状态。有人有想法或样本来实现这个吗?

1 个答案:

答案 0 :(得分:0)

据我所知,您想要为Grid.Width属性设置动画。 Grid.Width和Grid.Height属性的类型为GridLength,而WPF没有GridLength类型的标准动画类。 “自动” - 只是GridLength的一个特殊值。所以你可能需要编写自己的GridLengthAnimation类。请参阅DoubleAnimation类作为示例。这里有几个链接可以帮助您: https://marlongrech.wordpress.com/2007/08/20/gridlength-animation/ http://www.codeproject.com/Articles/18379/WPF-Tutorial-Part-Writing-a-custom-animation-cla

<强> UPD: 如果要将动画设置为“自动”值,则必须知道左列的最终大小,因为动画的操作范围为From和To值之间的值。所以你必须决定 - 你将如何绘制中间值?作为变体 - 始终开始显示带有展开菜单的网格和左列处于自动状态,然后,在开始动画(折叠列)后 - 获取网格的ActualWidth并将其用作From值,并在再次开始动画后(展开列) - 使用此保存的ActualWidth作为To值,最后,在完成反向动画时,从GetCurrentValue返回Auto。