Use Images from Other Class Libraries in .NET MAUI

Learn to load and display embedded image resources from other class libraries in .NET MAUI by creating a custom `ImageResourceConverter`.

  1. Set the image as an Embedded Resource.

  2. Add an image resource converter class.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    
    public class CustomImageResourceConverter : ImageResourceConverter
    {
        public override ImageSource? DefaultConvertReturnValue { get; set; } = null;
    
        [return: NotNullIfNotNull(nameof(value))]
        public override ImageSource? ConvertFrom(string? value, CultureInfo? culture = null) => value switch
        {
            null => null,
            _ => ImageSource.FromResource(BuildImageResource(value), GetType().Assembly)
            //_ => ImageSource.FromFile(value)
        };
    
        string BuildImageResource(in string resourceName) => $"{typeof(CustomImageResourceConverter).Assembly.GetName().Name}.Images.{resourceName}";
    }
    
  3. Add the image reference in the XAML of the calling project.

    1
    2
    3
    4
    5
    6
    7
    8
    
    <ContentPage.Resources>
        <ResourceDictionary>
            <toolkit:InvertedBoolConverter x:Key="InvertedBoolConverter" x:Name="InvertedBoolConverter"/>
            <resources:CustomImageResourceConverter x:Key="ImageResourceConverter" />
        </ResourceDictionary>
    </ContentPage.Resources>
    
    <ImageButton Source="{Binding Source=append.png, Converter={StaticResource ImageResourceConverter}}" />
    
  4. All image names must be in lowercase.

Built with Hugo
Theme Stack designed by Jimmy