我正在WPF中创建一个卡拉OK程序。基本上,我有一个播放视频等的MediaElement,以及一个用于在MediaElement上渲染内容的StackPanel。
我正在尝试以编程方式将一个TextBlock添加到StackPanel,它将显示歌词。问题是,无论我写什么,TextBlock都会在左上角结束。
Private LyricLabel As New TextBlock
Sub New(Panel As StackPanel)
With LyricLabel
.Foreground = Brushes.White
.FontFamily = New FontFamily("Verdana")
.FontSize = 20
.HorizontalAlignment = HorizontalAlignment.Stretch
.VerticalAlignment = VerticalAlignment.Bottom
End With
Panel.Children.Add(LyricLabel)
End Sub
另外,我想要一个球或什么东西在一个单词之间跳跃。是否有一种简单的方法可以获得每个单词的宽度+它们之间的空间,还是我必须自己计算?
答案 0 :(得分:1)
使用Grid
并在XAML中完全执行此操作将是更好的选择。 Grid
具有以下属性:如果许多元素位于同一单元格中,则它们都重叠。因此,您将MediaElement和TextBlock放在一起,并进行正确的对齐,然后就完成了:
<Grid>
<MediaElement/>
<TextBlock Text="{Binding CurrentLyric}" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0 0 0 30"/>
</Grid>
您只需提供一个属性即可删除要显示的当前文本以使绑定正常工作,并且会为您调整它。