49 lines
2.0 KiB
C#
49 lines
2.0 KiB
C#
using Ooui.Forms.Extensions;
|
|
using System.ComponentModel;
|
|
using Xamarin.Forms;
|
|
|
|
namespace Ooui.Forms.Cells
|
|
{
|
|
public class TextCellRenderer : CellRenderer
|
|
{
|
|
public override CellView GetCell(Cell item, CellView reusableView, List listView)
|
|
{
|
|
var nativeTextCell = base.GetCell(item, reusableView, listView);
|
|
var textCell = (TextCell)item;
|
|
|
|
if (nativeTextCell.Cell != null)
|
|
nativeTextCell.Cell.PropertyChanged -= nativeTextCell.HandlePropertyChanged;
|
|
|
|
nativeTextCell.Cell = textCell;
|
|
textCell.PropertyChanged += nativeTextCell.HandlePropertyChanged;
|
|
nativeTextCell.PropertyChanged = HandlePropertyChanged;
|
|
|
|
nativeTextCell.TextLabel.Text = textCell.Text ?? string.Empty;
|
|
nativeTextCell.DetailTextLabel.Text = textCell.Detail ?? string.Empty;
|
|
nativeTextCell.TextLabel.Style.Color = textCell.TextColor.ToOouiColor();
|
|
nativeTextCell.DetailTextLabel.Style.Color = textCell.DetailColor.ToOouiColor();
|
|
|
|
WireUpForceUpdateSizeRequested(item, nativeTextCell);
|
|
|
|
UpdateBackground(nativeTextCell, item);
|
|
|
|
return nativeTextCell;
|
|
}
|
|
|
|
protected virtual void HandlePropertyChanged(object sender, PropertyChangedEventArgs args)
|
|
{
|
|
var tvc = (CellView)sender;
|
|
var textCell = (TextCell)tvc.Cell;
|
|
|
|
if (args.PropertyName == TextCell.TextProperty.PropertyName)
|
|
tvc.TextLabel.Text = textCell.Text ?? string.Empty;
|
|
else if (args.PropertyName == TextCell.DetailProperty.PropertyName)
|
|
tvc.DetailTextLabel.Text = textCell.Detail ?? string.Empty;
|
|
else if (args.PropertyName == TextCell.TextColorProperty.PropertyName)
|
|
tvc.TextLabel.Style.Color = textCell.TextColor.ToOouiColor();
|
|
else if (args.PropertyName == TextCell.DetailColorProperty.PropertyName)
|
|
tvc.DetailTextLabel.Style.Color = textCell.DetailColor.ToOouiColor();
|
|
}
|
|
}
|
|
}
|