Stretch =“uniform”在Silverlight MediaElement上的行为不符合预期

时间:2012-08-17 21:41:24

标签: c# silverlight mediaelement

我正在使用以下XAML通过Silverlight媒体元素显示流式视频:

<UserControl x:Class="slplayer.MainPage"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  Padding="0">
        <!-- source is set to a custom MediaStreamSource in code behind -->
        <MediaElement Name="mediaElement" HorizontalAlignment="Stretch"
               VerticalAlignment="Stretch" Margin="0" Stretch="Uniform" />
</UserControl>

并且期望视频应该播放,并且应该根据播放窗口的大小消耗所有可用的水平空间或所有可用的垂直空间,并缩放非约束维度以保持视频的宽高比。

在垂直尺寸受到约束的情况下,这正是发生的情况,但是(正如您在下面的屏幕截图中看到的那样)当水平尺寸受到约束时,左右两侧留下了大量的空间和垂直尺寸缩小到这个更窄的宽度。

我的问题是为什么视频不占用所有水平空间?

我尝试过的事情:

  • 简化布局(这是我如何获得上述XAML)
  • 在Web浏览器和SilverlightViewportElement中托管控件
  • 修改mp4文件和视频曲目的尺寸
  • 在WMP中播放mp4文件(正确缩放)
  • 在html,body,div和使用的对象上设置css样式

问题说明:

The problem illustrated

2 个答案:

答案 0 :(得分:0)

尝试将MediaElement放入网格中。

答案 1 :(得分:0)

将MediaElement放入网格中并删除所有对齐拉伸设置以及填充和边距。仅将Stretch设置为MediaElement的统一。

PS:检查你的aspx div是否有Silverlight对象。其宽度和高度可能设置为错误的值。