我在我们正在构建的应用程序中的新创建的窗口上放置了一个MediaElement,将它的源设置为wmv(也用gif尝试过它),但是当我在屏幕上显示时它没有出现在屏幕上跑吧。
然后我创建了一个新的单独项目,它都按预期工作。
这是有效的代码:
<MediaElement Source="pre-loader.wmv" LoadedBehavior="Manual" Name="Video" />
这是不起作用的代码:
<MediaElement Source="pre-loader.wmv" LoadedBehavior="Manual" Name="Video" />
我知道,它一样......我不明白吗?
我尝试了几种不同的方法,但得到了相同的结果。测试项目的主要应用没有。
我在两个项目中使用相同的wmv文件,我也确保在两种情况下都复制到输出目录。设置为“如果较新则复制”。
任何帮助都会......好吧,乐于助人
更新:我尝试使用snoop查找MediaElement,ActualWidth,ActualHeigt都为0但height属性为140,width属性为NAN。 此外,source = Default。
当我在Blend中查看屏幕时,我也得到“加载预览时出错”,但它并没有让我知道错误是什么。
答案 0 :(得分:9)
首先要看的是你的项目资源。 “Source”属性表示您从相对URI获取视频,该视频仅在视频位于项目文件中时才有效。
默认情况下,MediaElement具有静默失败,这意味着除非您专门对其进行编程,否则它不会抛出异常。这通常在代码隐藏的Mediaelement的“MediaFailed”(VB)/“OnMediaFailed”(C#)属性中设置某种操作。我通常会在此事件中添加一个消息框,告诉用户视频无法加载。
在您遇到问题的项目中,您需要做的第一件事就是进入项目属性,转到“资源”选项卡,然后将视频作为资源导入。然后,在解决方案资源管理器中,单击视频(在Resources文件夹中)和(如您所做)将其属性设置为BuildAction = None和CopyToOutput =如果更新则复制。不要将其设置为“嵌入式资源”,否则MediaElement将无法播放它。它必须设置为“无”。
然后,将mediaelement源更改为“Resources / pre-loader.wmv”
另一个(相当明显的)可能性是检查你是否在你的代码中调用了mediaelement.play函数。如果您不需要显式控制播放/暂停/停止功能,我会将LoadedBehavior设置为“播放”。
希望有所帮助!如果您还有其他问题,请评论。
答案 1 :(得分:0)
检查项目属性中两个项目的“Platform tagret”属性。某些编解码器仅适用于x86或x64模式。