仅使用C#显示图像Xamarin表单时出现问题

时间:2017-06-06 08:15:37

标签: c# android xamarin

我参考这个网站https://developer.xamarin.com/guides/xamarin-forms/user-interface/images/#Local_Images

提出这个问题

我在网站上尝试了xaml代码并且它有效,但是在我创建了一个新的xamarin PCL项目并测试了c#代码之后。它无法显示图像。

我做了什么: 从AboutPage.xaml中删除了所有内容,直到看起来像这样:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="EmbbedImages.Views.AboutPage"
             xmlns:vm="clr-namespace:EmbbedImages.ViewModels;"
             Title="{Binding Title}">
  <ContentPage.BindingContext>
    <vm:AboutViewModel />
  </ContentPage.BindingContext>

</ContentPage>

然后对于AboutPage.xaml.cs,我对其进行了修改,使其如下所示:

using Xamarin.Forms;

namespace EmbbedImages.Views
{
    public partial class AboutPage : ContentPage
    {
        public AboutPage()
        {
            InitializeComponent();

            var beachImage = new Image { Aspect = Aspect.AspectFit };
            beachImage.Source = ImageSource.FromFile("butterfly.jfif");

        }
    }
}

我确保将butterfly.jfif图像添加到我的android drawable文件夹中,但是没有显示图像。因为我是xamarin和Android以及c#的新手,所以非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

图像可能无法显示,因为它不是Page的一部分。 如果你已经将它添加到页面并且它仍然不会显示它将在加载/打开文件/解码它时必须是一个问题。

您可以在XAML中添加它或将代码编辑为以下内容:

using Xamarin.Forms;

namespace EmbbedImages.Views
{
    public partial class AboutPage : ContentPage
    {
        public AboutPage()
        {
            InitializeComponent();

            var beachImage = new Image { Aspect = Aspect.AspectFit };
            beachImage.Source = ImageSource.FromFile("butterfly.jfif");
            this.Content = beachImage;    
        }
    }
}

在XAML中添加它看起来像这样:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="EmbbedImages.Views.AboutPage"
             xmlns:vm="clr-namespace:EmbbedImages.ViewModels;"
             Title="{Binding Title}">
  <ContentPage.BindingContext>
    <vm:AboutViewModel />
  </ContentPage.BindingContext>

  <ContentPage.Content>
    <Image x:Name="beachImage" Aspect="AspectFit">
  </ContentPage.Content>

</ContentPage>

背后的代码:

using Xamarin.Forms;

namespace EmbbedImages.Views
{
    public partial class AboutPage : ContentPage
    {
        public AboutPage()
        {
            InitializeComponent();

            beachImage.Source = ImageSource.FromFile("butterfly.jfif");
        }
    }
}