我正在尝试在Silverlight MediaElement中制作WMV视频。它适用于此XAML代码:
<MediaElement
x:Name="VideoElement"
Stretch="Fill"
Source=""http://ecn.channel9.msdn.com/o9/pdc09/wmv/CL20.wmv""
Grid.Row="0"
Grid.Column="0"
AutoPlay="True"/>
但是当我尝试将源代码绑定到我的代码中的某个属性时:
<MediaElement
x:Name="VideoElement"
Stretch="Fill"
Source="{Binding VidPath}"
Grid.Row="0"
Grid.Column="0"
AutoPlay="True"/>
VidPath在哪里:
public Uri VidPath
{
get
{
return new Uri("http://ecn.channel9.msdn.com/o9/pdc09/wmv/CL20.wmv", UriKind.Absolute);
}
set;
}
它不起作用。你能帮我找出原因吗?
答案 0 :(得分:1)
首先,我假设这是一个完全信任的浏览器应用程序,否则跨域策略限制会阻止MediaElement播放该视频。
鉴于此,您提供的代码没有任何问题,但我预感到包含MediaPlayer的页面的DataContext设置不正确。如果你在VidPath的getter中放了一个断点,它是否会被击中?我打赌没有。
无论对象包含您的“VidPath”属性,您都希望确保该页面的DataContext。例如。如果你只是将VidPath作为一个属性放在代码隐藏中,你可以将它添加到构造函数中:
this.DataContext = this;