2017-06-01 4 views
0

Visual Studio Project Image Brand new zu Xamarin und ich habe mehr als ein verlorener Tag versuchen, ein einfaches Bild zu bekommen auf einer einfachen Seite anzuzeigen.Xamarin Forms Bild/Embedded Bildprobleme

ich Visual Studio 2017.

Das Bild verwenden als eingebettete Ressource festgelegt ist (siehe beiliegende Abbildung). Es gibt keine Fehler beim Ausführen, das Bild wird einfach nicht angezeigt.

Ich habe versucht, die folgenden:

<Image Source="XF0003.Assets.logo.png" /> 
<Image Source="Assets.logo.png" /> 
<Image Source="logo.png" /> 
<Image Source="{local:ImageResource XF0003.Assets.logo.png}" /> 
<Image Source="{local:ImageResource Assets.logo.png}" /> 
<Image Source="{local:ImageResource logo.png}" /> 

XAML Seite Code:

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      xmlns:local="clr-namespace:XF0003" 
      x:Class="XF0003.MainPage"> 

    <StackLayout> 
     <Image Source="Assets.logo.png" /> 
     <Label Text="Username" /> 
     <Entry x:Name="usernameEntry" Placeholder="username" /> 
     <Label Text="Password" /> 
     <Entry x:Name="passwordEntry" IsPassword="true" /> 
     <Button Text="Login" Clicked="PageOne" /> 
     <Label x:Name="messageLabel" /> 
    </StackLayout> 
</ContentPage> 

XAML.CS Seite Code:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using Xamarin.Forms; 

namespace XF0003 
{ 
    public partial class MainPage : ContentPage 
    { 
     public MainPage() 
     { 
      InitializeComponent(); 
     } 

     private async void PageOne(object sender, EventArgs e) 
     { 
      Navigation.InsertPageBefore(new Page1(), this); 
      await Navigation.PopAsync(); 
     } 
    } 
    [ContentProperty("Source")] 
    public class ImageResourceExtension : Xamarin.Forms.Xaml.IMarkupExtension 
    { 
     public string Source { get; set; } 

     public object ProvideValue(IServiceProvider serviceProvider) 
     { 
      if (Source == null) 
      { 
       return null; 
      } 
      // Do your translation lookup here, using whatever method you require 
      var imageSource = ImageSource.FromResource(Source); 

      return imageSource; 
     } 
    } 
} 
+0

Sie haben vergessen, das Bild hinzuzufügen –

+0

Nicht sicher, was passiert ist, aber ich habe das Bild wieder zu meinem Beitrag hinzugefügt ... – jf974

Antwort

1

Im Bild, das Sie verbunden sind, sieht es aus wie Sie haben das Bild nur in Ihrem xamarin.forms-Projekt gespeichert. Ich glaube, dass die Bilder in ihren jeweiligen Projekten gespeichert werden müssen.

heißt

XF0003.Droid/Resources/Drawable (For Android) 

XF0003.iOS/Resources (For iOS) 

Stellen Sie sicher, Ihre Bilder den gleichen Namen haben.

für die Android-Bilder machen die Aktion AndroidResource bauen. Für die iOS Bilder machen die Build-Aktion BundleResource.

DoNotCopy für beide.

Wenn Sie auf das Bild beziehen, nur mit den Tasten [name]. [Dateityp]

<Image Source="logo.png" /> 

Es ist auch sehr detailliert here erläutert.

+0

Ich nahm den Großteil meines Codes aus dem Bereich Embedded Bilder des von Ihnen bereitgestellten Links. Von diesem Abschnitt der Seite erscheinen die Bilder als Projektebene und nicht als einzelne Projektebene. Allerdings zog ich das Bild auf die Android/Ressourcen/Drawable Ordner, setzen Sie ihn auf AndroidResources, und immer noch kein Bild angezeigt werden soll. Ich habe beide verwendet: und . Keiner zeigte das Bild. – jf974

+0

Ich bin mir nicht sicher, worauf Sie sich beziehen. Hier ist ein Link zu dem genauen Abschnitt, der es erklärt. Ich habe diese Seite auch für meinen Code verwendet. https://developer.xamarin.com/guides/xamarin-forms/user-interface/images/#Local_Images – mac10688

+1

Wenn Sie auf das Bild in Xamarin Formen beziehen, beziehen Sie sich einfach auf es war logo.png – mac10688