媒体元素在底部WPF上剪切

时间:2016-12-21 12:16:59

标签: c# wpf

我在MediaElement中显示视频时遇到问题。

我尝试将MediaElement放入Grid中,以便我可以使用他的大小:

<Grid Grid.Row="1" Name="RootMediaElement"
      Margin="10 10 10 10">
    <MediaElement
    ClipToBounds="True"
    x:Name="MediaPlayer"
    HorizontalAlignment="Center"
    Stretch="UniformToFill"
    LoadedBehavior="Manual"
    Source="{Binding Source}">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="MediaEnded">
                <i:InvokeCommandAction Command="{Binding MediaEndedCommand}" />
            </i:EventTrigger>
        </i:Interaction.Triggers>
    </MediaElement>
</Grid>

我还将ClipToBound属性设置为true,这也没有帮助。我看不到视频的底部部分。还有SizeChanged事件在开始时触发,我尝试手动设置宽度和高度,如下所示:

 MediaPlayer.SizeChanged += (sender, args) =>
            {
                var x = sender as MediaElement;
                MediaPlayer.Height = RootMediaElement.ActualHeight;
                MediaPlayer.Width = RootMediaElement.ActualWidth;

            };

我正在读这么多,无法找到解决方案。有谁知道吗?

编辑:父网格设置

<Grid>
<Grid.RowDefinitions>
            <RowDefinition Height="105" /> <!-- First row-->
            <RowDefinition Height="895" /> <!-- Second row -->
</Grid.RowDefinitions>

<!-- Media is places inside RootMediaElement Grid which take whoole second row -->
</Grid>

1 个答案:

答案 0 :(得分:0)

我已经测试了你的xaml,你可能想要添加这个

VerticalAlignment="Center"

到您的MediaElement,但请注意,您的视频将“缩放”<​​/ strong>。

编辑:您为这两行指定了一个高度值,这意​​味着在调整窗口大小时它们不会改变,因此您应该

将窗口最小高度设置为第1行高度+第2行高度+边距(RootMediaGrid)(1030px):

MinHeight="1030"

或只是将第二行高度设置为:

<RowDefinition Height="*" />