-
Set the image as an
Embedded Resource
. -
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}"; }
-
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}}" />
-
All image names must be in lowercase.