如何做Silverlight覆盖元素

时间:2011-07-10 17:51:01

标签: silverlight

我开始学习SL ... 我正在尝试制作大小为X的MediaElement,并在电影框架的底部制作一些将运行的字幕。 我无法理解我是否需要绝对位置或其他东西。

请咨询

感谢

2 个答案:

答案 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>