2016-05-27 30 views
0

Ich versuche, Symbole in eine ImageCell innerhalb einer ListView zu laden, aber wenn ich mein Projekt erstelle, erscheint das Symbol nicht auf der ImageCell.Wie lade ich ein Bild in eine ImageCell auf Xamarin.Forms?

Hier ist meine Projektstruktur:

enter image description here

Hier ist meine XAML Seite:

<?xml version="1.0" encoding="utf-8" ?> 
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      x:Class="MyNotes.StartPage"> 

    <MasterDetailPage.Master Title="Menu"> 
    <ContentPage Title="Menu"> 
     <StackLayout VerticalOptions="FillAndExpand"> 
     <ListView x:Name="listViewMaster" VerticalOptions="FillAndExpand"> 
      <ListView.ItemTemplate> 
      <DataTemplate> 
       <ImageCell Text="{Binding Title}" ImageSource="{Binding IconSource}" /> 
      </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 
     </StackLayout> 
    </ContentPage> 
    </MasterDetailPage.Master> 

    <MasterDetailPage.Detail> 
    <ContentPage> 

    </ContentPage> 
    </MasterDetailPage.Detail> 

</MasterDetailPage> 

Und hier ist der Code hinter:

using System.Collections.Generic; 
using Xamarin.Forms; 

namespace MyNotes 
{ 
    public partial class StartPage : MasterDetailPage 
    { 
     public StartPage() 
     { 
      InitializeComponent(); 

      List<MasterPageItem> masterPageItems = new List<MasterPageItem>() 
      { 
       new MasterPageItem() 
       { 
        Title = "Contacts", 
        IconSource = ImageSource.FromFile(@"c:\Projetos\MyNotes\MyNotes\MyNotes\Resources\image\contacts.png"), 
        TargetType = typeof(ContactPage) 
       }, 
       new MasterPageItem() 
       { 
        Title = "Todo List", 
        IconSource = ImageSource.FromFile(@"Resources\image\todo.png"), 
        TargetType = typeof(TodoListPage) 
       }, 
       new MasterPageItem() 
       { 
        Title = "Reminder", 
        IconSource = ImageSource.FromResource("Resources.image.reminder.png"), 
        TargetType = typeof(ContactPage) 
       } 
      }; 

      listViewMaster.ItemsSource = masterPageItems; 
     } 
    } 
} 

Was mache ich falsch?

Antwort

1

Die Bilder gehen in die "native" Projekte:

  • Xamarin.iOS = BundledResource Körperbau Typ

  • Xamarin.Android = AndroidResource Körperbau Typ


IconSource = ImageSource.FromFile("SanFran.jpg") 

oder die implizite Konvertierung mit:

IconSource = "SanFran.jpg"; 

enter image description here

Working with Images

+0

Danke Sie. Nachdem ich die Bilder in den richtigen Ordner innerhalb des nativen Projekts verschoben und die korrekte Build Action festgelegt hatte, funktionierte es einwandfrei. – artie

+0

Ich sehe etwas ähnliches mit ImageCell, wo ich alle Varianten ausprobiert habe, die ich mir vorstellen kann und es erscheint nicht. Vielleicht muss ich noch etwas anderes einstellen .... Irgendwelche Ideen? –

+0

@TheSenator Ich würde vorschlagen, dass Sie eine neue Frage mit dem entsprechenden Code, Bild-Setup, um zu verstehen, was Sie tun, zu posten. – SushiHangover

0

Haben Sie die Bilder markiert, die Sie dem Projekt als eingebettete Dateien hinzugefügt haben?

embedded resource

+0

Ja, habe ich versucht, dass. Aber es funktioniert nicht. – artie

+0

Als ich denke, müssen Sie die Bilder als ImageSource.FromResource und nicht ImageSource.FromFile hinzufügen. –

+0

@AviK. Zur Erinnerung: Das Einbetten in die Assembly und das Verwenden von 'FromResource' ist eine Option, die zwar funktioniert, aber in Bezug auf Leistung und Ressourcenverbrauch nicht empfohlen wird. Der beste Weg besteht darin, die Build-Typen 'BundledResource' oder' AndroidResource' zu ​​verwenden. – SushiHangover

Verwandte Themen