Xamarin tabla Ver los encabezados personalizados

votos
0

Yo quería añadir un botón a la cabecera de una sección de encabezado vista de tabla, es decir, un botón más, y después de investigación encontró que al hacer eso se debe crear un encabezado personalizado. Soy incapaz de encontrar la manera de hacer eso.

¿Cómo se puede crear un encabezado personalizado a una vista de sección de la tabla en Xamarin?

Estoy usando XAML y C #, así

Publicado el 07/11/2018 a las 22:41
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

Ver estas publicaciones en el blog: https://alexdunn.org/2017/03/21/xamarin-tips-xamarin-forms-ios-custom-tableview-section-titles/ https://alexdunn.org/2017/03/21 / Xamarin-tips-Xamarin-formas-android-aduana-tableview-section-títulos /

Ellos describen el uso de un intérprete personalizado para el TableView para personalizar el encabezado de sección. IOS Versión:

En el código compartido:

public partial class ColoredTableView : TableView
{
   public static BindableProperty GroupHeaderColorProperty = BindableProperty.Create("GroupHeaderColor", typeof(Color), typeof(ColoredTableView), Color.White);
   public Color GroupHeaderColor
   {
       get
       {
           return (Color)GetValue(GroupHeaderColorProperty);
       }
       set
       {
           SetValue(GroupHeaderColorProperty, value);
       }
   }

   public ColoredTableView()
   {
       InitializeComponent();
   }
}

En el proyecto de iOS:

[assembly: ExportRenderer(typeof(ColoredTableView),typeof(ColoredTableViewRenderer))]
namespace YOUR_IOS_NAMESPACE
{
    public class ColoredTableViewRenderer : TableViewRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<TableView> e)
        {
            base.OnElementChanged(e);
            if (Control == null)
                return;

            var tableView = Control as UITableView;
            var coloredTableView = Element as ColoredTableView;
            tableView.WeakDelegate = new CustomHeaderTableModelRenderer(coloredTableView);
        }

        private class CustomHeaderTableModelRenderer : UnEvenTableViewModelRenderer
        {
            private readonly ColoredTableView _coloredTableView;
            public CustomHeaderTableModelRenderer(TableView model) : base(model)
            {
                _coloredTableView = model as ColoredTableView;
            }
            public override UIView GetViewForHeader(UITableView tableView, nint section)
            {
                return new UILabel()
                {
                    Text = TitleForHeader(tableView, section),
                    TextColor = _coloredTableView.GroupHeaderColor.ToUIColor(),
                    TextAlignment = UITextAlignment.Center
                };
            }
        }
    }
} 

Sin embargo creo que el uso de un ListView o hacer su propia secciones (es decir, una sección con ningún conjunto tilde para el TableView, y luego usar las células puede ser la forma más fácil. Para ello, basta con definir una sección sin título y utilizar ViewCells para las secciones :

<TableView Intent="Data" 
           HasUnevenRows="true" >
    <TableRoot>
        <TableSection>
            <ViewCell >
                <StackLayout Orientation="Horizontal">
                    <Label x:Name="label1" Text="Section one" />
                    <Button Text="Button1" Clicked="Handle_Clicked" />
                </StackLayout>
            </ViewCell>
            <TextCell Text="TextCell" 
                      Detail="TextCell Detail" />
            <EntryCell Label="Entry Label" 
                       Text="EntryCell Text" />
            <SwitchCell Text="SwitchCell Text" />
            <ViewCell >
                <StackLayout Orientation="Horizontal">
                    <Label x:Name="label2" Text="Section Two" />
                    <Button Text="Button2" Clicked="Handle_Clicked" />
                </StackLayout>
            </ViewCell>
            <TextCell Text="TextCell" 
                      Detail="TextCell Detail" />
            <EntryCell Label="Entry Label" 
                       Text="EntryCell Text" />
            <SwitchCell Text="SwitchCell Text" />
        </TableSection>
    </TableRoot>
</TableView>
Respondida el 08/11/2018 a las 00:30
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more