Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1908, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Disabilita cookie ShinyStat

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

Xamarin.Forms, il controllo Editor e iOS

Xamarin.Forms mette a disposizione due controlli per la scrittura di testo: Entry ed Editor. Entry è paragonabile alla classica TextBox di altre piattaforme, Editor consente la scrittura multilinea.

Tra i due, Entry è quello (leggermente) più personalizzabile. In realtà soffre di varie mancanze, tra cui ad esempio non è disponibile una modalità read-only, ma parliamo dell'Editor che, a sua volta, soffre di mancanza di personalizzazione.

Come sapete, i controlli di Xamarin.Forms dietro le scene vanno a richiamare i corrispondenti controlli nativi, ciò significa che ne assumono anche l'aspetto relativo alla piattaforma.

Su iOS, il controllo Editor non ha bordo e non c'è (almeno ad oggi) alcuna proprietà che consenta di assegnarlo. Questo è abbastanza fastidioso, perché, di fatto, il controllo è invisibile fino a che non prende il focus.
Per risolvere questo problema bisogna creare un renderer, che vada a modificare l'aspetto direttamente del controllo nativo iOS.

Per farlo, si aggiunge una classe al progetto iOS col seguente codice:

using MobileInspect.iOS;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
 
[assemblyExportRenderer(typeof(Editor), typeof(CustomEditorRenderer))]
namespace MobileInspect.iOS
{
    public class CustomEditorRenderer : EditorRenderer
    {
        protected override void OnElementChanged(
                ElementChangedEventArgs<Editor> e)
        {
            base.OnElementChanged(e);
 
            if (Control != null)
            {
                Control.Layer.BorderColor =
                              UIColor.DarkGray.CGColor;
                Control.Layer.BorderWidth = 0.5f;
                Control.Layer.CornerRadius = 3f;
            }
        }
    }
}

Non dovete fare nulla a questo punto, se non scegliere un colore diverso, perché l'attributo ExportRenderer punta al controllo nativo.

Alessandro

Print | posted on venerdì 16 settembre 2016 00:00 | Filed Under [ Xamarin ]

Powered by:
Powered By Subtext Powered By ASP.NET