0

我正在 WPF 中创建一个卡拉 OK 程序。基本上,我有一个播放视频等的 MediaElement,还有一个 StackPanel,用于在 MediaElement 上渲染内容。

我正在尝试以编程方式将 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

另外,我想要一个球或其他东西从一个词跳到另一个词。有没有一种简单的方法可以获得每个单词的宽度+它们之间的空间,还是我必须自己计算?

4

1 回答 1

1

Grid使用 a并完全在 XAML 中执行此操作将是一个更好的选择。Grid具有如果许多元素在同一个单元格中的属性,它们都会重叠。因此,您将 MediaElement 和 TextBlock 放在一起,并进行适当的对齐,然后就完成了:

<Grid>
    <MediaElement/>
    <TextBlock Text="{Binding CurrentLyric}" FontSize="20" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0 0 0 30"/>
</Grid>

您只需提供一个属性来删除要显示的当前文本以使绑定起作用,它会为您调整它。

于 2013-08-16T01:00:54.477 回答