C# 拉伸=";统一;Silverlight MediaElement上的行为不符合预期

C# 拉伸=";统一;Silverlight MediaElement上的行为不符合预期,c#,silverlight,mediaelement,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/m

我使用以下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、正文、div和对象上设置css样式
问题说明:


尝试将您的
MediaElement
放入网格。

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


PS:检查您的aspx div中是否有Silverlight对象。它的宽度和高度可能设置了错误的值。

经过100次测试,我无法重现同样的问题。如果应用程序中没有使用样式或控件模板,并且视频如您所说是正确的,那么问题在于html/css。请发布更多有用的信息。为什么不使用
UniformToFill
。另外,您可以从视图源提供CSS吗?默认或其他CSS可能会影响您的页面。@ChibuezeOpata UniformToFill将剪辑视频,而不是拉伸视频以填充较小的维度。请记住,slviewport使用COM互操作,因此这里没有CSS。也就是说,我最终通过使用嵌入的web浏览器控件并用*{margin:0;padding:0;width:100%;height:100%}替换单个样式使其工作虽然我仍然不完全理解为什么这样做有效,因为它应该与之前在每个元素上设置的css相同。我认为您没有为HTML标记和正文设置边距和填充。这通常是利润率问题。使用*可以将样式应用于所有标记,包括HTML和BODY。我希望这有助于你澄清