2009-12-28 75 views
0

我做了一些自定义附加属性,使我可以在任何控件上创建“弹出”效果。C#WPF - Global ScrollViewer模式

当一个布尔型DependencyProperty被切换时,它动画的宽度和/或高度。

是否有一个很好的方法来设置控件中的所有ScrollViewer的滚动条可见性,以在此效果期间隐藏?您可以在动画中看到一些丑陋的滚动条。

我宁愿不必在动画开始时遍历视觉树,然后在动画完成时再次执行。

编辑:虽然备用解决方案将是不错的,在这一点上,我宁愿绑定到只读附加属性名为IsAnimating来处理设置滚动可见性。

是否有一个全球性的方式来呢?

+0

将Aviad标记为自他帮助以来的答案,虽然我上面的编辑是我的配合。 – jonathanpeppers 2009-12-30 16:45:27

回答

1

而不是动画控制自身的宽度,尝试在动画开始时固定其宽度,并将其重新设置为网格,然后为网格的宽度设置动画效果。原始视觉不会改变自己的小世界的大小,也不会出现或改变滚动条。

+0

我不明白这是如何工作的。我们需要一切适当的缩放或居中(滚动条除外)。有一些中心控件,渐变,图像等根据控件宽度进行调整。 – jonathanpeppers 2009-12-28 22:26:47

+0

然后重新配置到ViewBox呢?这只会在视觉上拉伸所有内容而不会强制布局更改。 – 2009-12-28 23:21:06

+0

我认为创建一个名为IsAnimating的只读属性并将其绑定到它可能会更简单。有没有全球性的方法来关闭ScrollViewers?否则,我会为每个我需要的scrollviewer设置绑定。 – jonathanpeppers 2009-12-29 19:34:51