tmighty
tmighty

Reputation: 11389

Image from ImageSource

I tried to follow the following example by @CraigDunn with the sample code

someButton.Image = ImageSource.FromFile("imageName.png");

My own try looks like this:

        _NavBarPrevPage = new Button
        {
            Image = ImageSource.FromResource("media_step_back.png")),
            BackgroundColor = Color.Red,
            TextColor = Color.White,
        };

For me, the IDE tells me:

The type Xamarin.Forms.ImageSource can't be converted to Xamarin.Forms.FileImageSource. An explicit conversion exists. Perhaps a conversion is missing.

I think I'm doing exactely what @CraigDunn proposed. What am I doing wrong?

I've tried the following, and I was able to get rid of the conversion errors in the current answer, but the image is not shown on the button, while it is shown in an image, so the file name is correct:

        var nImg = new FileImageSource()
        {
            File  = "media_step_back.png",
        };

        _NavBarPrevPage = new Button
        {
            Image =nImg,
        };

Upvotes: 0

Views: 3494

Answers (1)

Json
Json

Reputation: 1704

If the thing you need is a button with image that is implementing by code-behind :

Button button = new Button
            {
                BackgroundColor = Color.Red,
                Font = Font.Default,
                FontSize = 10,
                TextColor = Color.White,
                HeightRequest = 35,
                WidthRequest = 80
            };

            button.Image = "media_step_back.png";

            this.Content = button;

Please remember to put the image file (media_step_back.png) in your target platform's resource folder

UPDATE:

You problem were you didn't add the image source in the Property folder and target platform's resource folder (Please note that in below example, I have added a xamarin.png image in each Xamarin "Property" folder, Android's "Resource" and iOS's "Resource" folder)

Below is the updated code that I placed the button into a StackLayout (which also able to works if without StackLayout) :

public class MainPageNew : ContentPage
    {
        public MainPageNew()
        {
            StackLayout parent = new StackLayout();
            Button button = new Button
            {
                BackgroundColor = Color.Red,
                Font = Font.Default,
                FontSize = 10,
                TextColor = Color.White,
                HeightRequest = 300,
                WidthRequest = 80
            };

            //button.Image = "media_step_back.png";
            button.Image = "xamarin.png";

            parent.Children.Add(button);

            this.Content = parent;
        }

Android

enter image description here

iOS:

enter image description here

This is the download link of the updated code.

Upvotes: 2

Related Questions