C# 来自ImageSource的图像

C# 来自ImageSource的图像,c#,xamarin,xamarin.forms,imagesource,C#,Xamarin,Xamarin.forms,Imagesource,我试着用示例代码跟随@CraigDunn someButton.Image = ImageSource.FromFile("imageName.png"); 我自己的尝试如下所示: _NavBarPrevPage = new Button { Image = ImageSource.FromResource("media_step_back.png")), BackgroundColor = Color.Red,

我试着用示例代码跟随@CraigDunn

someButton.Image = ImageSource.FromFile("imageName.png");
我自己的尝试如下所示:

        _NavBarPrevPage = new Button
        {
            Image = ImageSource.FromResource("media_step_back.png")),
            BackgroundColor = Color.Red,
            TextColor = Color.White,
        };
对我来说,IDE告诉我:

The type Xamarin.Forms.ImageSource can't be converted to Xamarin.Forms.FileImageSource. An explicit conversion exists. Perhaps a conversion is missing.
我想我正在做@CraigDunn建议的事情。 我做错了什么

我尝试了以下方法,并且我能够消除当前答案中的转换错误,但是按钮上没有显示图像,而图像显示在图像中,因此文件名是正确的:

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

        _NavBarPrevPage = new Button
        {
            Image =nImg,
        };

如果您需要的是一个带有图像的按钮,它是通过代码隐藏实现的:

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;
请记住将图像文件(media_step_back.png)放在目标平台的资源文件夹中

更新:

你的问题是没有在属性文件夹和目标平台的资源文件夹中添加图像源(请注意,在下面的示例中,我在每个xamarin“属性”文件夹、Android的“资源”和iOS的“资源”文件夹中添加了一个xamarin.png图像)

下面是我将按钮放入StackLayout的更新代码(如果没有StackLayout也可以工作):

安卓

iOS:


是更新代码的下载链接。

如果您需要的是一个带有图像的按钮,该按钮由代码隐藏实现:

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;
请记住将图像文件(media_step_back.png)放在目标平台的资源文件夹中

更新:

你的问题是没有在属性文件夹和目标平台的资源文件夹中添加图像源(请注意,在下面的示例中,我在每个xamarin“属性”文件夹、Android的“资源”和iOS的“资源”文件夹中添加了一个xamarin.png图像)

下面是我将按钮放入StackLayout的更新代码(如果没有StackLayout也可以工作):

安卓

iOS:



是更新代码的下载链接。

试试someButton.Image.Source=ImageSource.FromFile(“imageName.png”)@PLOW这不起作用,因为它1)图像没有“源”,而且图像希望是FileImageSource而不是ImageSource。您需要的只是一个带有图像的按钮?你的目标是iOS和/或Android平台?@Janson我的目标是所有3个平台,根据Craig Dunn的帖子,我希望没有平台特定代码的Xamarin.Forms.Button能够成功。试试someButton.Image.Source=ImageSource.FromFile(“imageName.png”)@PLOW这不起作用,因为它1)图像没有“源”,而且图像希望是FileImageSource而不是ImageSource。您需要的只是一个带有图像的按钮?你的目标是iOS和/或Android平台?@Janson我的目标是所有3个平台,根据Craig Dunn的帖子,我希望没有平台特定代码的Xamarin.Forms.Button可以逃脱惩罚。@Jason我就是看不到它。在我的示例中,我可以在Xamarin.Forms.image中显示图像,但不能在按钮中显示。我很肯定我做对了。我在这里上传了一个示例项目:谢谢。你能在UWP中发布你的按钮的截图吗?也许那就是我的罪魁祸首。我总是针对UWP进行测试,并且使用您从Google Drive获得的更新代码(谢谢!),图像不会显示在UWP中。我已经将“xamarin.png”添加到UWP->Assets文件夹中,并将其设置为“Content”。我还尝试了“嵌入式资源”。所有这些都不起作用。对于Windows/UWP,您需要将图像放置在应用程序的根目录中,并使用Build Action:Content,而不是资产文件夹。资产文件夹用于应用程序图标和SplashSceen图像。欢迎使用!UWP有点奇怪,但这就是它的工作原理。如果您需要处理UWP项目中的大量图像,希望此链接将对您有所帮助。否则,在根文件夹中转储所有图像(想象一下,如果100++图像)将是一团混乱。()@杰森,我就是没看到。在我的示例中,我可以在Xamarin.Forms.image中显示图像,但不能在按钮中显示。我很肯定我做对了。我在这里上传了一个示例项目:谢谢。你能在UWP中发布你的按钮的截图吗?也许那就是我的罪魁祸首。我总是针对UWP进行测试,并且使用您从Google Drive获得的更新代码(谢谢!),图像不会显示在UWP中。我已经将“xamarin.png”添加到UWP->Assets文件夹中,并将其设置为“Content”。我还尝试了“嵌入式资源”。所有这些都不起作用。对于Windows/UWP,您需要将图像放置在应用程序的根目录中,并使用Build Action:Content,而不是资产文件夹。资产文件夹用于应用程序图标和SplashSceen图像。欢迎使用!UWP有点奇怪,但这就是它的工作原理。如果您需要处理UWP项目中的大量图像,希望此链接将对您有所帮助。否则,在根文件夹中转储所有图像(想象一下,如果100++图像)将是一团混乱。()