【问题标题】:WPF MediaElement not playing video when application is started from .exe从 .exe 启动应用程序时 WPF MediaElement 不播放视频
【发布时间】:2014-06-02 18:27:53
【问题描述】:

我已将带有视频的 MediaElement 设置为我的应用程序的窗口背景。它有效,但只有当我从 Visual Studio 启动程序时。如果我尝试从构建的 .exe 启动它,MediaElement 中的视频将不会加载并且背景保持黑色。 这是我的代码:

<Window.Background >
    <VisualBrush>
        <VisualBrush.Visual>
            <MediaElement Source="Resources/BF4R.wmv" LoadedBehavior="Play" IsMuted="True" MediaEnded="BGRAIN_MediaEnded" ></MediaElement>
        </VisualBrush.Visual>
    </VisualBrush>
</Window.Background>

这些是 BF4R.wmv 属性:

构建操作:内容

复制到输出目录:始终复制

【问题讨论】:

  • 可执行文件旁边是否有Resources/BF4R.wmv
  • 没有。不是,现在可以了。但我希望它从嵌入式资源中播放。我该怎么做?
  • 使用Resource 代替Embedded resource 并使用Pack URI 来标识资源。
  • 我试过Source="pack://siteoforigin:,,,/Resources/BF4R.wmv",它仍然是黑色,但在设计器中显示了背景。
  • siteoforigin 表示您已从 Internet 资源部署应用程序并尝试从中下载资源。

标签: c# wpf xaml


【解决方案1】:

当本地应用程序可以访问特定资源,但安装的版本不能,通常有几个可能的原因:

1) 资源未正确部署:

为确保资源部署完毕,一般应将其Build Action设置为ContentCopy to Output Directory设置为Copy总是。我看到你已经这样做了。如果您使用项目 Properties 页面的 Publish 选项卡来发布您的应用程序,请验证您的资源是否已列出并设置为 Include Application Files 对话框窗口,点击相关按钮。

2) 应用部署时无法通过文件路径访问资源:

最好使用以下格式的文件路径(来自 MSDN 上的 Pack URIs in WPF 页面):

以下示例显示了 XAML 资源文件的包 URI,该文件位于被引用程序集的项目文件夹的子文件夹中。

pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml 

所以在你的情况下,这更像是:

Source="pack://application:,,,/YourAssemblyName;component/Resources/BF4R.wmv"

【讨论】:

  • 我试过这个。它在设计器中工作,但在运行时媒体元素保持黑色。
猜你喜欢
  • 1970-01-01
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多