无法在 Avalonia 中使用相对图像路径 XAML
Cannot use relative image path in Avalonia XAML
所以为了我的应用程序的跨平台使用,我从 WPF 切换到 Avalonia。 WPF 支持图像的相对路径。但是当我切换到 Avalonia 时,将 Window 的背景设置为具有图像相对路径源的 ImageBrush(类似于 Images/Background.png
),它输出:
System.IO.FileNotFoundException: 'The resource Images/Background.png could not be found.'
我一开始以为是因为字符串不能转成IBitmap
接口,后来才知道给它绝对路径(好像是C:\Users\username\source\repos\MySolution\MyProject\Images\Background.png
之类的)我错了。
我该如何解决这个问题?
编辑:Images/Background.png
被复制到输出目录,我使用的是 Visual Studio 2019.
您需要将所有资产添加到 .csproj
文件内的标签中,以便 Avalonia 可以找到它们。相对路径就足够了。如果您的 .csproj
位于应用程序的根文件夹中,那么您需要在 .csproj
文件中添加以下 属性:
<ItemGroup>
<AvaloniaResource Include="Images\**" />
</ItemGroup>
推荐
当您从 Visual Studio 中的模板创建 Avalonia 项目时,文件夹 Assets
将自动包含在内,例如默认情况下,这将在您的 .csproj
中:
<ItemGroup>
<AvaloniaResource Include="Assets\**" />
</ItemGroup>
我个人认为更好的做法是在 Assets
目录中创建一个 Images
文件夹并将图像放在那里。这样它们就会自动包含在内,而无需修改 .csproj
(假设您使用的是官方模板)。
所以为了我的应用程序的跨平台使用,我从 WPF 切换到 Avalonia。 WPF 支持图像的相对路径。但是当我切换到 Avalonia 时,将 Window 的背景设置为具有图像相对路径源的 ImageBrush(类似于 Images/Background.png
),它输出:
System.IO.FileNotFoundException: 'The resource Images/Background.png could not be found.'
我一开始以为是因为字符串不能转成IBitmap
接口,后来才知道给它绝对路径(好像是C:\Users\username\source\repos\MySolution\MyProject\Images\Background.png
之类的)我错了。
我该如何解决这个问题?
编辑:Images/Background.png
被复制到输出目录,我使用的是 Visual Studio 2019.
您需要将所有资产添加到 .csproj
文件内的标签中,以便 Avalonia 可以找到它们。相对路径就足够了。如果您的 .csproj
位于应用程序的根文件夹中,那么您需要在 .csproj
文件中添加以下 属性:
<ItemGroup>
<AvaloniaResource Include="Images\**" />
</ItemGroup>
推荐
当您从 Visual Studio 中的模板创建 Avalonia 项目时,文件夹 Assets
将自动包含在内,例如默认情况下,这将在您的 .csproj
中:
<ItemGroup>
<AvaloniaResource Include="Assets\**" />
</ItemGroup>
我个人认为更好的做法是在 Assets
目录中创建一个 Images
文件夹并将图像放在那里。这样它们就会自动包含在内,而无需修改 .csproj
(假设您使用的是官方模板)。