Partager via


BindingContext Classe

Définition

Classe d’assistance utilisée pour mapper des structures et des classes dans des éléments d’interface utilisateur dans MonoTouch.Dialog.

public class BindingContext : IDisposable
type BindingContext = class
    interface IDisposable
Héritage
BindingContext
Implémente

Remarques

La construction de boîte de dialogue basée sur la réflexion est utilisée en créant un objet de classe MonoTouch.Dialog.BindingContext, la méthode prend trois paramètres : (1) Objet qui sera utilisé pour résoudre les cibles Tap, (2) Objet qui sera modifié et (3) un titre pour celui-ci.

L’interface utilisateur est construite en fonction du type de l’objet en cours de modification. Le type peut contenir des objets des types suivants : string, bool, énumérations, floats, integers, DateTime, T:MonoTouch.UIKit.UIImage et ceux-ci peuvent être décorés avec une poignée d’attributs qui pilotent la génération d’interface utilisateur.

Une boîte de dialogue très simple contenant une case à cocher s’affiche ici :

class Settings {
    public bool AirplaneMode;
}

L’élément ci-dessus génère une page qui contient un seul élément avec la légende « Mode Avion » et un commutateur activé/désactivé. La légende est calculée en fonction du nom du champ. Dans ce cas, « AirplaneMode » devient « Mode Avion ». MonoTouch.Dialogs prend en charge d’autres conventions, de sorte que « AirplaneMode », « airplaneMode » et « airplane_mode » produisent tous la même légende « Mode Avion ».

Si vous devez contrôler la légende réelle (par exemple pour inclure des caractères spéciaux, utiliser une autre orthographe ou réutiliser une classe existante), il vous suffit d’attacher l’attribut [Caption] à votre variable, comme suit :

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

Le contenu de la boîte de dialogue est rendu dans le même ordre que celui où les champs sont déclarés dans la classe . Vous pouvez utiliser l’attribut [Section] pour regrouper des informations dans des sections qui ont un sens. Vous pouvez utiliser l’attribut [Section] de plusieurs manières :

[Section]

Cette opération crée une section, sans en-têtes ni pieds de page.

[Section (header)]

>> Crée une section, avec l’en-tête spécifié et aucun pied de page.

[Section (header, footer)]

>> Crée une section avec l’en-tête et le pied de page spécifiés.

Voici les widgets actuels pris en charge par l’API Reflection :

Constantes de chaîne et Boutons.

Utilisez le type de chaîne. Si le type a une valeur, en plus d’afficher la légende, il affiche sa valeur à droite.

Vous pouvez ajouter l’attribut [OnTap] à votre chaîne pour appeler une méthode à la demande.

Vous pouvez ajouter l’attribut [Multiligne] à votre chaîne pour rendre le rendu de la cellule en plusieurs lignes. Vous pouvez également utiliser l’attribut [Html] sur une chaîne, dans ce cas, la valeur de la chaîne doit contenir l’URL à charger dans le UIWebView incorporé.

L’attribut [Aligntment] prend un paramètre UITextAlingment qui détermine la façon dont la chaîne doit être affichée

Exemples :

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;

Entrée de texte et Entrées de mot de passe.

Utilisez le type de chaîne pour votre champ et annotez la chaîne avec l’attribut [Entry]. Si vous fournissez un argument à l’attribut [Entry], il sera utilisé comme valeur d’espace réservé grisé pour UITextField.

Utilisez l’attribut [Mot de passe] au lieu de [Entrée] pour créer une ligne d’entrée sécurisée.

Exemples :


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

[Entry]
public string StreetName;

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

Vous pouvez également spécifier à la fois l’espace réservé et le type de clavier à utiliser sur l’entrée à l’aide de quelques attributs Entry :

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

Commutateurs activés/désactivés

Utilisez une valeur bool pour stocker un paramètre activé/désactivé. Par défaut, vous obtiendrez un commutateur Activé/désactivé, mais vous pouvez modifier ce comportement pour simplement afficher une case à cocher à l’aide de l’attribut [Case à cocher] :

Exemples :

bool OnOffSwitch;

[Checkbox]
bool ReadyToRun;

Valeurs float

L’utilisation d’un float dans votre source fournit un curseur à l’écran. Vous pouvez contrôler les plages des valeurs à l’aide de l’attribut [Range (faible,élevé)]. Sinon, la valeur par défaut consiste à modifier une valeur comprise entre 0 et 1.

Exemples :

float brightness;

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

Modification de date

Utilisez un objet « DateTime » dans votre classe pour présenter un sélecteur de dates.

Par défaut, cela fournit un éditeur de date et d’heure. Si vous souhaitez uniquement modifier la date, définissez l’attribut [Date], si vous souhaitez uniquement modifier l’heure, définissez l’attribut [Heure] :

Exemples :


[Date]
DateTime birthday;

[Time]
DateTime alarm;

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

Valeur d'énumération

Monotouch.Dialogs transforme automatiquement une énumération en sélection radio. Spécifiez simplement l’énumération dans votre fichier :

Exemples :

enum SeatPreference { Window, Aisle, MiddleSeat }

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

Images

Les variables de type UIImage affichent l’image sous forme de miniature et appellent le sélecteur d’image si vous appuyez sur.

Exemples :

UIImage ProfilePicture;

Ignorer certains champs

Si vous souhaitez ignorer un champ particulier, appliquez simplement l’attribut [Skip] au champ.

Exemples :

[Skip] Guid UniquId;

Boîtes de dialogue imbriquées

Pour créer des boîtes de dialogue imbriquées, utilisez simplement une classe imbriquée, le classeur de réflexion crée les bits de navigation nécessaires en fonction du modèle de conteneur.

La valeur d’une boîte de dialogue imbriquée ne doit pas être null.

Exemples :

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

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

Pour initialiser :


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

IEnumerable en tant que source radio

Vous pouvez utiliser n’importe quel type qui implémente IEnumerable, y compris les génériques (qui implémentent IEnumerable) comme source de valeurs pour créer un sélecteur un sur plusieurs, similaire à la sélection de type radio que vous obtenez à partir d’une énumération.

Pour l’utiliser, vous aurez besoin d’une valeur int avec l’attribut [RadioSelection] défini pour contenir la valeur qui sera sélectionnée au démarrage et pour contenir la nouvelle valeur une fois terminé.

Par exemple :

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

La valeur rendue est la valeur rendue en appelant ToString() sur la valeur retournée par IEnumerable.

Création d’une boîte de dialogue à partir de l’objet

Une fois que vous avez créé votre classe avec les attributs appropriés, vous créez un contexte de liaison, comme suit :

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);
}

Les informations sont alors affichées. Pour récupérer les valeurs après la modification, vous devez appeler le contexte. Récupérer (). Vous pouvez le faire à partir de votre gestionnaire favori, et à ce stade, vous pouvez également appeler le contexte. Disposer() pour aider le GC à libérer des ressources importantes qu’il aurait pu détenir.

Constructeurs

BindingContext(Object, Object, String)

Crée un contexte de liaison avec les paramètres spécifiés.

Champs

Root

RootElement produit que vous pouvez passer à un DialogViewController.

Méthodes

Dispose()
Dispose(Boolean)
Fetch()

Récupère les données qui ont été modifiées par l’utilisateur et les stocke dans l’objet d’origine qui a été passé à BindingContext.

S’applique à