如何在XAML中引用嵌入式资源?

35 浏览
0 Comments

如何在XAML中引用嵌入式资源?

我有几张图片想要嵌入到exe文件中。

当我将构建操作(Build Action)设置为嵌入式资源(Embedded Resource)时,

在整个代码中出现了一个错误,显示资源不可用,

让我将构建操作设置为资源(Resource)

我尝试了几种不同的方法:

 YearBook;component/Resources/Images/darkaurora.png
 Images/darkaurora.png
 pack://application:,,,/Resources/Images/darkaurora.png

这段代码位于一个资源文件中。

但都没有起作用,它们都会抛出这个错误:

Cannot convert the string 'pack://application:,,,/Resources/Images/darkaurora.png' into a 'System.Windows.Media.ImageSource' object. Cannot locate resource 'resources/images/darkaurora.png'.  Error at object 'Image_Background' in markup file 'YearBook;component/Resources/ImageResources.xaml' Line 4 Position 6.

在代码的不同位置,我会得到不同的错误:

the file 'YearBook;component/Resources/Images/shadowdrop.png' is not a part of the project or its 'Build Action' property is not set to 'Resource'

那么,我做错了什么呢?

admin 更改状态以发布 2023年5月25日
0
0 Comments

如果你正在使用Xamarin Forms并且遇到了这个问题,你可以通过创建一个自定义的XAML标记扩展来解决, 解释在这里:

https://learn.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/images?tabs=windows

在“嵌入式图像”->“使用XAML”部分

自定义扩展的引用

[ContentProperty (nameof(Source))]
public class ImageResourceExtension : IMarkupExtension
{
 public string Source { get; set; }
 public object ProvideValue (IServiceProvider serviceProvider)
 {
   if (Source == null)
   {
     return null;
   }
   // Do your translation lookup here, using whatever method you require
   var imageSource = ImageSource.FromResource(Source, typeof(ImageResourceExtension).GetTypeInfo().Assembly);
   return imageSource;
 }
}

如何使用的引用



 
   
   
 

0
0 Comments

当您将 BuildAction 设置为 Resource 时,它将被嵌入到程序集中作为嵌入式资源。 或者您可以将 BuildAction 设置为 Content,那么它将被捆绑到生成的 .xap 文件中。
您可以使用这两个 BuildActions 中的任何一个。通过将 BuildAction设置为 Content 您可以访问Image,例如:"/Resources/Images/darkaurora.png" (必须以斜杠开头)。当您使用 BuildAction Resource 时,可以将图像访问为 "/YearBook;component/Resources/Images/darkaurora.png" (程序集名称;component/相对路径)。希望这能帮助。

0