Ooui-tws-port/Ooui.Forms/Cells/TextCellElement.cs

56 lines
2.0 KiB
C#

using System;
using System.ComponentModel;
using Ooui.Forms.Extensions;
using Xamarin.Forms;
namespace Ooui.Forms.Cells
{
public class TextCellElement : CellElement
{
public Label TextLabel { get; } = new Label ();
public Label DetailTextLabel { get; } = new Label ();
public TextCellElement ()
{
AppendChild (TextLabel);
AppendChild (DetailTextLabel);
}
protected override void BindCell ()
{
Cell.PropertyChanged += Cell_PropertyChanged;
if (Cell is TextCell textCell) {
TextLabel.Text = textCell.Text ?? string.Empty;
DetailTextLabel.Text = textCell.Detail ?? string.Empty;
TextLabel.Style.Color = textCell.TextColor.ToOouiColor (OouiTheme.TextColor);
DetailTextLabel.Style.Color = textCell.DetailColor.ToOouiColor (OouiTheme.SecondaryTextColor);
}
base.BindCell ();
}
protected override void UnbindCell ()
{
Cell.PropertyChanged -= Cell_PropertyChanged;
base.UnbindCell ();
}
void Cell_PropertyChanged (object sender, PropertyChangedEventArgs args)
{
if (!(Cell is TextCell textCell))
return;
if (args.PropertyName == TextCell.TextProperty.PropertyName)
TextLabel.Text = textCell.Text ?? string.Empty;
else if (args.PropertyName == TextCell.DetailProperty.PropertyName)
DetailTextLabel.Text = textCell.Detail ?? string.Empty;
else if (args.PropertyName == TextCell.TextColorProperty.PropertyName)
TextLabel.Style.Color = textCell.TextColor.ToOouiColor (OouiTheme.TextColor);
else if (args.PropertyName == TextCell.DetailColorProperty.PropertyName)
DetailTextLabel.Style.Color = textCell.DetailColor.ToOouiColor (OouiTheme.SecondaryTextColor);
}
}
}