为什么我的WPF图像的相对文件路径与MediaElement和SoundPlayer的.wav完全不同?

时间:2019-09-13 11:14:55

标签: c# wpf

我只是想使用从相对文件路径中检索到的图像-字符串:"./Data/Image/Border"已显示从项目的Debug/Data/.......中检索其他两种类型的媒体播放器(SoundPlayers和MediaElements)中的内容我已经尝试过了。

但是,当尝试对图像使用完全相同的代码时,出现错误:

"Could not find a part of the path 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\Data\Image\Border.png'"

将绝对路径粘贴到图像上是可行的,但我非常希望使用相对路径。另外,代码位置也不是问题,因为我已经在窗口的代码中的各个位置尝试了此代码而没有任何更改。

<Image x:Name="image" HorizontalAlignment="Left" Height="100" Margin="288,315,0,0" VerticalAlignment="Top" Width="100" Source="./Data/Image/Border.png"/>

<MediaElement x:Name="mediaElement" Height="1080" Width="1920" Source="./Data/Video/background_video.mp4" IsMuted="True" Stretch="Fill" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0"/>

1 个答案:

答案 0 :(得分:0)

如果该图像文件不是您的Visual Studio项目的一部分(并且其构建动作为ContentResource),您仍然可以从相对于该文件位置的路径加载它通过指定siteoforigin Pack URI前缀来执行程序集:

<Image ... Source="pack://siteoforigin:,,,/Data/Image/Border.png"/>

有关详细信息,请参见Pack URIs in WPFSite of Origin Pack URIs


如果您的UI使用了一组固定的图像,则通常将它们作为程序集资源文件进行管理,该文件将被编译为生成的程序集文件,而不是作为输出文件夹中的单独文件。

将它们添加到Visual Studio项目中(例如,在项目文件夹Image中的文件夹Data中),并将其“构建操作”设置为Resource。然后通过资源文件包URI加载它们:

<Image ... Source="pack://application:,,,/Data/Image/Border.png"/>

,可能缩写为

<Image ... Source="Data/Image/Border.png"/>