在WP7 / XAML中翻译后折叠空间

时间:2011-11-05 13:37:36

标签: silverlight xaml windows-phone-7

我有一个简单的Windows Phone 7应用程序(Silverlight / XAML / C#),StackPanel包含一些TextBlock个元素。

但是,如果我翻译其中一个TextBlock元素(通过RenderTransform使用TranslateTransform指定新的x / y位置),那么TextBlock仍会保留它在StackPanel中的原始空间。因此,布局中有一个“洞”,TextBlock在被转换之前(我猜这是渲染转换方式的结果)。

我的问题是:元素的原始空间在转换后是否可以“折叠”?我知道如何在旧的HTML / CSS中执行此操作,但我不知道Silverlight / XAML 。我已经尝试了一些方法,但到目前为止还没有任何工作(现在我只是通过改变周围TextBlock元素的边距来补偿,但这似乎是一种丑陋的做事方式。)

如果无法“折叠”原始空间,是否有另一种方法可以改变元素的相对x / y位置(在这种情况下,我真的不能自由使用Canvas)?

提前致谢!

1 个答案:

答案 0 :(得分:2)

如果您确定转换的元素将始终从StackPanel中“丢失”,您可以给它一个负底边距等于TextBlock的ActualHeight,它会将其下方的项目向上拉。

如果不这样做,另一条路径就是创建一个包含StackPanel的UserControl,并实现MeasureOverride和/或ArrangeOverride