2016-04-20 8 views
0

Dieser Code funktioniert:Verwenden Sie benutzerdefinierte Datatemplate in XF mit XAML

<ListView ItemsSource="{Binding ItemsSourcePrimary}" VerticalOptions="FillAndExpand"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 

     <ViewCell> 
      <ViewCell.View> 
      <StackLayout Padding="15, 5, 15, 5" Orientation="Horizontal" HorizontalOptions="FillAndExpand"> 
       <Image Source="{Binding IconSource}" Aspect="AspectFit" HorizontalOptions="Center" VerticalOptions="Center" /> 
       <Label Text="{Binding Title}" VerticalOptions="Center" /> 
      </StackLayout> 
      </ViewCell.View> 
     </ViewCell> 

     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

Aber ich möchte ein Teil in eine Klasse wie folgt trennen:

<ListView ItemsSource="{Binding ItemsSourcePrimary}" VerticalOptions="FillAndExpand"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 

     <local:MenuListCell Title="{Binding Title}" IconSource="{Binding IconSource}" /> 

     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

Aber ich habe einen Fehler:

No Eigentum von Text Name gefunden

ich mit diesem Code die Klasse MenuListCell in einer XAML-Datei implementieren:

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

    <ViewCell.View> 
     <StackLayout Padding="15, 5, 15, 5" Orientation="Horizontal" HorizontalOptions="FillAndExpand"> 
      <Image Source="{Binding IconSource}" Aspect="AspectFit" HorizontalOptions="Center" VerticalOptions="Center" /> 
      <Label Text="{Binding Title}" VerticalOptions="Center" /> 
     </StackLayout> 
    </ViewCell.View> 

</ViewCell> 

Sie eine Lösung haben Sie? Müssen wir eine C# Datei .cs erstellen, um die Eigenschaften zu implementieren, oder wir können es in XAML tun?

Antwort

1

Wenn Sie die MenuListCell immer auf die gleiche Art von Objekten zu binden, müssen Sie nur noch

ändern
<local:MenuListCell Title="{Binding Title}" IconSource="{Binding IconSource}" /> 

zu

<local:MenuListCell /> 

Datacontext der Zelle Ihr Artikel ist. So ist die Title in

<Label Text="{Binding Title}" VerticalOptions="Center" /> 

ist eine Eigenschaft des Listenelements.

+0

Ok, aber mit dieser Methode erhalte ich diesen Fehler: "System.NullReferenceException: Objektreferenz nicht auf eine Instanz eines Objekts festgelegt" Haben Sie eine Idee? Derselbe Code mit ViewCell funktioniert direkt – NilkOne

+0

Ohne einen Stacktrace ist es nicht einfach. Es sollte funktionieren, wenn die Daten korrekt sind. –

Verwandte Themen