如何在顶部填充视频并在底部显示标签。 (填充和锚定)

时间:2011-09-25 01:19:24

标签: wpf

在Winforms中,我使用Fill和Dock来实现这一目标。

我有一个“页面”,我想播放一个视频文件,并在底部显示标签。我希望页面能够拉伸并使视频拉伸并使标签保持在页面底部。

到目前为止,我的尝试总是会导致视频在播放时覆盖标签。如何解决这个问题?

(StackPanel中的其他控件已被省略)

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      x:Class="SDKSample.MediaElementExample" >

    <DockPanel LastChildFill="True">
        <MediaElement Source="media\numbers.wmv" Name="myMediaElement" 
            LoadedBehavior="Manual" UnloadedBehavior="Stop" 
            MediaOpened="Element_MediaOpened" MediaEnded="Element_MediaEnded" 
            DockPanel.Dock="Top" Margin="50" />
        <StackPanel HorizontalAlignment="Center" Orientation="Horizontal" 
                Height="30"  DockPanel.Dock="Bottom" Margin="50">
                <TextBlock Margin="5"  VerticalAlignment="Center">
                Video Label
                </TextBlock>
        </StackPanel>
    </DockPanel>
</Page>

解决方案(感谢Daniel May):

<Grid Height="Auto">
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition Height="30"/>
    </Grid.RowDefinitions>

    <MediaElement Source="media\numbers.wmv" Name="myMediaElement" LoadedBehavior="Manual" UnloadedBehavior="Stop" 
     MediaOpened="Element_MediaOpened" MediaEnded="Element_MediaEnded" />
    <StackPanel HorizontalAlignment="Center" Orientation="Horizontal" Height="30" Grid.Row="1">
        <Button Content="Button" Height="23" Name="button1" Width="75" Click="button1_Click" />
    </StackPanel>
</Grid>

1 个答案:

答案 0 :(得分:1)

您可以使用Grid来实现此目的。

<Grid Height="300" Width="300">
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
    <MediaElement Source="media\numbers.wmv" 
            Name="myMediaElement" 
            LoadedBehavior="Manual" 
            UnloadedBehavior="Stop" 
            MediaOpened="Element_MediaOpened" 
            MediaEnded="Element_MediaEnded" />
    <TextBlock Margin="5" 
            Grid.Row="1"
            VerticalAlignment="Center"
            Text="Video Label" />
</Grid>

使用第二个Height上的RowDefinition属性,强制该行调整其内容的大小。之前的RowDefinition会填充剩余的可用空间(在您的情况下,是您的MediaElement)。