-
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 14public 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.