我有一个简单的Windows Phone 7应用程序(Silverlight / XAML / C#),StackPanel
包含一些TextBlock
个元素。
但是,如果我翻译其中一个TextBlock
元素(通过RenderTransform
使用TranslateTransform
指定新的x / y位置),那么TextBlock
仍会保留它在StackPanel
中的原始空间。因此,布局中有一个“洞”,TextBlock
在被转换之前(我猜这是渲染转换方式的结果)。
我的问题是:元素的原始空间在转换后是否可以“折叠”?我知道如何在旧的HTML / CSS中执行此操作,但我不知道Silverlight / XAML 。我已经尝试了一些方法,但到目前为止还没有任何工作(现在我只是通过改变周围TextBlock
元素的边距来补偿,但这似乎是一种丑陋的做事方式。)
如果无法“折叠”原始空间,是否有另一种方法可以改变元素的相对x / y位置(在这种情况下,我真的不能自由使用Canvas
)?
提前致谢!
答案 0 :(得分:2)
如果您确定转换的元素将始终从StackPanel中“丢失”,您可以给它一个负底边距等于TextBlock的ActualHeight,它会将其下方的项目向上拉。
如果不这样做,另一条路径就是创建一个包含StackPanel的UserControl
,并实现MeasureOverride
和/或ArrangeOverride
。