2017-05-05 19 views
1

私は以下のように設定ListViewを持っている:Xamarinフォームで `ListView`の` TextCell`の背景色を変更するにはどうすればいいですか?

<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> 

私はiOS用のレンダラを持っており、次のように設定します。

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

どういうわけか私の全体のListViewは、私がリストビューに設定されたGray背景を使用しています。私がしたいのは、ListViewのためのGrayの色の背景(つまり、ヘッダーの部分が灰色の背景を持つことを意味する)で、TextCellの色の背景はRedです。間違ったプロパティを設定して、TextCellの背景を取得していますか?

答えて

1

カスタムレンダラーが実際にセルを返すわけではないため、BackgroundColorに行った変更は反映されません。

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

更新:代わりにcell.ContentView.BackgroundColorを設定する必要があります。

+0

申し訳ありませんが、私はその部分を見逃しました。ここにサンプルコードを直接入力しました。しかし、私のプロジェクトでは、私は 'セル'を返しました。ありがとう –

+0

この回答は私を助けませんでした。彼に私の返事を参照してください。ありがとう。 –

+0

私は答えを更新しました。 'cell.ContentView.BackgroundColor'を設定する必要があります。カスタムレンダラーが他の答えで言及されているように必要でない場所でも、より良いソリューションがあるかもしれません。 –

0

Gridcell/StackLayout内にtextcellを追加し、対応するレイアウトをxaml内で直接BackgroundColor="Red" に割り当てます。カスタムレンダラーを書く必要はありません。

+0

'ListView'の' DataTemplate'は 'Cell'を継承しなければならないと思います。だから私の 'TextCell'の周りに' StackLayout'をラップすることはできません。 –

+0

textcellの代わりにエントリを使用できます。 – Renjith

関連する問題