BindingContext Classe

Definizione

Classe helper usata per eseguire il mapping di strutture e classi agli elementi dell'interfaccia utente in MonoTouch.Dialog.

public class BindingContext : IDisposable
type BindingContext = class
    interface IDisposable
Ereditarietà
BindingContext
Implementazioni

Commenti

La costruzione della finestra di dialogo basata su reflection viene usata creando un oggetto di classe MonoTouch.Dialog.BindingContext, il metodo accetta tre parametri: (1) Oggetto che verrà usato per risolvere le destinazioni Tap, (2) L'oggetto che verrà modificato e (3) un titolo per esso.

L'interfaccia utente viene creata in base al tipo dell'oggetto da modificare. Il tipo può contenere oggetti dei tipi seguenti: stringa, bool, enumerazioni, float, interi, DateTime, e tali elementi possono essere ulteriormente decorati con un numero limitato di attributi che guidano la generazione dell'interfaccia utente.

Viene visualizzata una finestra di dialogo molto semplice che contiene una casella di controllo:

class Settings {
    public bool AirplaneMode;
}

La pagina precedente genererà una pagina contenente un singolo elemento con la didascalia "Modalità aereo" e un interruttore attivato/disattivato. La didascalia viene calcolata in base al nome del campo. In questo caso "AirplaneMode" diventa "Modalità aereo". MonoTouch.Dialogs supporta altre convenzioni in modo che "AirplaneMode", "airplaneMode" e "airplane_mode" producano la stessa didascalia "Modalità aereo".

Se è necessario controllare la didascalia effettiva (ad esempio per includere caratteri speciali, usare un'ortografia diversa o riutilizzare una classe esistente) è sufficiente collegare l'attributo [Didascalia] alla variabile, ad esempio:

[Caption ("Your name is:")]
string userName;

Il contenuto della finestra di dialogo viene eseguito nello stesso ordine in cui i campi vengono dichiarati nella classe. È possibile usare l'attributo [Sezione] per raggruppare le informazioni nelle sezioni che hanno senso. È possibile usare l'attributo [Sezione] in alcuni modi:

[Section]

In questa sezione viene creata una nuova sezione senza intestazioni o piè di pagina.

[Section (header)]

>> Crea una nuova sezione, con l'intestazione specificata e senza piè di pagina.

[Section (header, footer)]

>> Crea una nuova sezione con l'intestazione e il piè di pagina specificati.

Questi sono i widget correnti supportati dall'API Reflection:

Costanti stringa e pulsanti.

Usare il tipo di stringa. Se il tipo ha un valore, oltre a visualizzare la didascalia, eseguirà il rendering del relativo valore a destra.

È possibile aggiungere l'attributo [OnTap] alla stringa per richiamare un metodo su richiesta.

È possibile aggiungere l'attributo [Multiline] alla stringa per rendere il rendering della cella in più righe. È inoltre possibile usare l'attributo [Html] in una stringa, in tal caso il valore della stringa deve contenere l'URL da caricare nell'interfaccia utente incorporata UIWebView.

L'attributo [Aligntment] accetta un parametro uiTextAlingment che determina la modalità di rendering della stringa

Esempi:

public string Version = "1.2.3";

[OnTap ("Login")]
public string Login;

[Caption ("(C) FooBar, Inc")]
string copyright;

[Caption ("This is a\nmultiline caption")]
[Multiline]
string multiline;

[Caption ("Date")]
[Alignment (UITextAlignment.Center)]
string centered;

Voci di testo e password.

Usare il tipo di stringa per il campo e annotare la stringa con l'attributo [Entry]. Se si specifica un argomento per l'attributo [Entry], verrà usato come valore segnaposto grigio per UITextField.

Usare l'attributo [Password] anziché [Entry] per creare una riga di ingresso sicura.

Esempi:


[Entry ("Your username")]
public string Login;

[Entry]
public string StreetName;

[Password, Caption ("Password")]
public string passwd;

È anche possibile specificare sia il segnaposto che il tipo di tastiera da usare nella voce usando alcuni degli attributi Entry:

[Entry (KeyboardType=UIKeyboardType.NumberPad,Placeholder="Your Zip code")]
public string ZipCode;

Commutatori on/off

Usare un valore bool per archiviare un'impostazione on/off, per impostazione predefinita si otterrà un interruttore on/off, ma è possibile modificare questo comportamento in modo da visualizzare solo una casella di controllo usando l'attributo [Checkbox]:

Esempi:

bool OnOffSwitch;

[Checkbox]
bool ReadyToRun;

Valori float

L'uso di un float nell'origine fornirà un dispositivo di scorrimento sullo schermo. È possibile controllare gli intervalli dei valori usando l'attributo [Range (basso,alto)]. In caso contrario, il valore predefinito consiste nel modificare un valore compreso tra 0 e 1.

Esempi:

float brightness;

[Range (0, 10), Caption ("Grade")]
float studentGrade;

Modifica data

Usare un oggetto "DateTime" nella classe per presentare una selezione data.

Per impostazione predefinita, in questo modo verrà fornito un editor di data e ora, se si vuole modificare solo la data, impostare l'attributo [Date] se si vuole modificare l'ora, impostare l'attributo [Time]:

Esempi:


[Date]
DateTime birthday;

[Time]
DateTime alarm;

[Caption ("Meeting Time")]
DateTime meetingTime;

Valore di enumerazione

Monotouch.Dialogs trasforma automaticamente un'enumerazione in una selezione radio. Specificare semplicemente l'enumerazione nel file:

Esempi:

enum SeatPreference { Window, Aisle, MiddleSeat }

[Caption ("Seat Preference")]
SeatPreference seat;

Immagini

Le variabili con tipo UIImage eseguiranno il rendering dell'immagine come anteprima e richiameranno il selettore di immagini se toccato.

Esempi:

UIImage ProfilePicture;

Ignora alcuni campi

Se si vuole ignorare un determinato campo, applicare l'attributo [Skip] al campo.

Esempi:

[Skip] Guid UniquId;

Dialoghi nidificati

Per creare dialoghi annidati, usare solo una classe annidata, il binding di reflection creerà i bit di spostamento necessari in base al modello di contenitore.

Il valore per una finestra di dialogo annidata non deve essere Null.

Esempi:

class MainSettings {
    string Subject;
    string RoomName;
    TimeRange Time;
}

class TimeRange {
    [Time] DateTime Start;
    [Time] DateTime End;
}

Per inizializzare:


new MainSettings () {
    Subject = "Review designs",
    RoomName = "Conference Room II",
    Time = new TimeRange {
        Start = DateTime.Now,
	End   = DateTime.Now
           }
       }

IEnumerable come origine radio

È possibile usare qualsiasi tipo che implementa IEnumerable, inclusi i generics (che implementano IEnumerable) come origine dei valori per la creazione di un selettore uno-di-molti, simile alla selezione simile alla radio ottenuta da un'enumerazione.

Per usarlo, sarà necessario un valore int con l'attributo [RadioSelection] impostato per contenere il valore selezionato all'avvio e anche per contenere il nuovo valore al termine.

Ad esempio:

       class MainSettings {
    [RadioSelection ("Themes")]
    public int CurrentTheme;
    public IList<string> Themes;
}

Il rendering del valore è il valore eseguito chiamando ToString() sul valore restituito da IEnumerable.

Creazione di una finestra di dialogo dall'oggetto

Dopo aver creato la classe con gli attributi appropriati, creare un contesto di associazione, come illustrato di seguito:

BindingContext context;

public void Setup ()
{
    // Create the binder.
    context = new BindingContext (this, data, "Settings");

    // Create our UI
    // Pass our UI (context.Root) and request animation (true)
    var viewController = new DialogViewController (context.Root, true);

    navigation.PushViewController (viewController, true);
}

Verrà eseguito il rendering delle informazioni. Per recuperare nuovamente i valori dopo la modifica è necessario chiamare il contesto. Recupero (). È possibile eseguire questa operazione dal gestore preferito e a quel punto è anche possibile chiamare il contesto. Dispose() per aiutare la GC a rilasciare qualsiasi risorsa di grandi dimensioni che potrebbe essere stata mantenuta.

Costruttori

BindingContext(Object, Object, String)

Crea un contesto di associazione con i parametri specificati.

Campi

Root

Elemento RootElement prodotto che è possibile passare a dialogViewController.

Metodi

Dispose()
Dispose(Boolean)
Fetch()

Recupera i dati modificati dall'utente e lo archivia nell'oggetto originale passato a BindingContext.

Si applica a