2017-05-05 3 views
1

Ich habe ein ListView wie folgt einstellen:Wie ändere ich die Hintergrundfarbe von `TextCell` in` ListView` in Xamarin Forms?

<ListView HasUnevenRows="true" BackgroundColor="Gray"> 
    <ListView.Header> 
     <StackLayout Padding="20,35,20,10" Orientation="Horizontal" HorizontalOptions="FillAndExpand"> 
      <Label FontSize="13" TextColor="Gray" Text="Header text here"/> 
     </StackLayout> 
    </ListView.Header> 
    <ListView.ItemTemplate> 
     <ListView.DataTemplate> 
      <TextCell Text="{Binding CategoryName}" Detail="{Binding Count}"> 
     </ListView.DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

ich ein Renderer für iOS haben und stellen Sie die folgenden Schritte aus:

public override UITableViewCell GetCell(Cell item, UITableViewCell reusableCell, UITableView tv) 
{ 
    var cell = base.GetCell(item, reusableCell, tv); 
    cell.BackgroundColor = UIColor.Red; 
    return cell; 
} 

Irgendwie meine ganze ListView die Gray Hintergrund verwendet ich für die Listenansicht einstellen . Was ich will, ist ein Gray Farbhintergrund für die ListView (was bedeutet, dass der Header-Teil einen grauen Hintergrund haben würde) und Red farbigen Hintergrund für die TextCell haben. Setze ich die falsche Eigenschaft, um den gewünschten Hintergrund für TextCell zu erhalten?

Antwort

1

Ihr benutzerdefinierter Renderer gibt die Zelle nicht zurück, sodass die Änderung, die Sie an BackgroundColor vornehmen, nicht zustande kommt.

Update: Sie sollten stattdessen cell.ContentView.BackgroundColor setzen.

+0

Entschuldigung, ich habe gerade diesen Teil verpasst. Ich habe den Beispielcode direkt eingegeben. Aber in meinem Projekt habe ich die "Zelle" zurückgegeben. Danke –

+0

Diese Antwort hat mir nicht geholfen. Bitte beziehen Sie sich auf meine Antwort an ihn. Vielen Dank. –

+0

Ich aktualisierte die Antwort. Sie sollten 'cell.ContentView.BackgroundColor' einstellen. Es kann jedoch bessere Lösungen geben, wenn ein benutzerdefinierter Renderer nicht erforderlich ist, wie in den anderen Antworten erwähnt. –

0

Fügen Sie Ihre Textzelle in Grid/StackLayout hinzu und weisen Sie BackgroundColor="Red" für das entsprechende Layout direkt im XAML zu. Sie müssen keinen benutzerdefinierten Renderer dafür schreiben.

+0

Ich glaube, die 'DataTemplate' für eine' ListView' muss von einer 'Cell' erben. Also kann ich kein 'StackLayout' um meine' TextCell' wickeln. –

+0

Anstelle von Textzelle können Sie Eintrag verwenden. – Renjith

Verwandte Themen