无法在 Avalonia XAML 中使用相对图像路径

Tri*_*inh 4 .net-core avaloniaui

因此,为了我的应用程序的跨平台使用,我从 WPF 切换到 Avalonia。WPF 支持图像的相对路径。但是当我切换到 Avalonia 时,将窗口的背景设置为具有图像相对路径源的 ImageBrush(类似于Images/Background.png),它会输出:

System.IO.FileNotFoundException: 'The resource Images/Background.png could not be found.'
Run Code Online (Sandbox Code Playgroud)

我首先想到的是因为字符串无法转换为IBitmap接口,但后来我意识到当我给它绝对路径(类似C:\Users\username\source\repos\MySolution\MyProject\Images\Background.png)时我错了。我怎么解决这个问题?

编辑:Images/Background.png复制到输出目录,我使用的是 Visual Studio 2019。

fra*_*pps 5

您需要将所有资产添加到文件内的标签中.csproj,以便 Avalonia 可以找到它们。相对路径就足够了。如果您.csproj位于应用程序的根文件夹中,那么您需要在.csproj文件中添加以下属性:

<ItemGroup>
  <AvaloniaResource Include="Images\**" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

推荐

当您从 Visual Studio 内的模板创建 Avalonia 项目时,该文件夹Assets将自动包含在内,例如,.csproj默认情况下,该文件夹将位于您的文件夹中:

<ItemGroup>
  <AvaloniaResource Include="Assets\**" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

我个人认为最好的做法是在目录中创建一个Images文件夹Assets并将图像放在那里。这样它们就会自动包含在内,而无需您修改.csproj(假设您使用官方模板)。