【发布时间】:2017-02-08 03:07:38
【问题描述】:
我有这个目录结构:
c:\app\program.exe
c:\app\assets\layout.xaml
c:\app\assets\videos\video.mp4
c:\app\assets\image\image.png
layout.xaml 包含:
<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Image Source="assets/image/image.png" />
<MediaElement Source="assets/videos/video.mp4" />
</Grid>
我使用加载layout.xaml
using (var sr = new StreamReader(@"c:\app\assets\layout.xaml"))
{
var pnl = (Panel)XamlReader.Load(sr.BaseStream);
SomeOtherGrid.Children.Add(pnl);
}
视频会显示,但图像不会。如何让图像显示,为什么视频显示而图像不显示?
编辑: 我知道行和网格是如何工作的。我知道在这种情况下视频将位于图像之上。我要问的是:为什么视频显示而图像不显示。它们的来源完全相同。
编辑 2:
显然,您必须对外部资源使用这种荒谬的“打包”格式:
pack://siteoforigin:,,,/assets/videos/video.mp4
这适用于图像和视频,但不适用于字体:
pack://siteoforigin:,,,/assets/fonts/intelclear/#Intel Clear Pro
他们为什么把这件事弄得如此复杂?如果是相对路径,为什么不直接从二进制文件的根目录加载?
【问题讨论】:
-
如果您使用 XAML 文件 目录中的相对路径,它应该可以工作,根据我的回答,您使用 XamlReader.Load 方法动态加载...跨度>
-
也不起作用。试试看——制作那个目录结构并按照我在你的代码中的样子加载它。除了“打包”格式外,没有任何东西适用于图像。 nothing 适用于具有相对路径的字体。
-
我已经这样做了(字体除外)并且确实有效。