MediaElement未显示

时间:2011-02-15 18:34:03

标签: .net wpf

我在我们正在构建的应用程序中的新创建的窗口上放置了一个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中查看屏幕时,我也得到“加载预览时出错”,但它并没有让我知道错误是什么。

2 个答案:

答案 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模式。