我开始学习SL ... 我正在尝试制作大小为X的MediaElement,并在电影框架的底部制作一些将运行的字幕。 我无法理解我是否需要绝对位置或其他东西。
请咨询
感谢
答案 0 :(得分:3)
如果您需要将它作为副标题使用,您只需将TextBlock放在网格上的MediaElement下,并且需要在XAML上将VerticalAllignment属性作为底部。它将超越它。像这样;
<Grid>
<MediaElement/>
<TextBlock VerticalAllignment="Bottom"/>
</Grid>
如果您不熟悉silverlight,可以将网格布局称为相对定位。并且可以给你的文本块或你想要的任何东西留出余量,只需看看intellisense(如果使用VS),你就会明白,如果你使用表达式混合,那么使用UI会更容易。
如果你想使用绝对定位,你需要使用Canvas而不是Grid Layout,它是相同的,你可以将任何东西改为canvas,几乎没有问题。在画布中,您需要使用左右属性而不是所有对齐。像这样;
<Canvas>
<MediaElement/>
<TextBlock Canvas.Left="0" Canvas.Top="400"/>
</Canvas>
另一个选择是stackpanel它不适合LayoutRoot,但它非常适合控件。所以,如果你想让你的字幕留在你的电影下,你应该像这样使用StackPanel;
<StackPanel Orientation="Vertical">
<MediaElement/>
<TextBlock/>
</StackPanel>
总结一下;
- 如果你想让你的字幕在你的电影使用网格之上,就像第一个例子一样,
- 如果你有一个固定的尺寸,并且想要将字幕放在你想要的任何地方,请使用Canvas,
- 如果你想把你的字幕放在电影下面,请使用StackPanel。
- 我个人的选择是网格。 =)
有关更多信息,您可以查看这篇文章,它看起来很不错! http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-2-using-layout-management.aspx
快乐的编码!!
答案 1 :(得分:1)
TextBlock将覆盖(在Grid布局中)MediaElement,因为它是在MediaElement之后声明的。 VerticalAlignment =“Bottom”将它放在网格的底部。您可能希望将网格的宽度和高度(而不是MediaElement)设置为视频大小。 MediaElement将自动调整大小以拉伸网格的整个大小。
<Grid x:Name="LayoutRoot" Width="480" Height="320">
<MediaElement/>
<TextBlock TextWrapping="Wrap" VerticalAlignment="Bottom"/>
</Grid>