Freigeben über


BindingContext Klasse

Definition

Hilfsklasse, die zum Zuordnen von Strukturen und Klassen zu Elementen der Benutzeroberfläche in MonoTouch.Dialog verwendet wird.

public class BindingContext : IDisposable
type BindingContext = class
    interface IDisposable
Vererbung
BindingContext
Implementiert

Hinweise

Die reflexionsbasierte Dialogkonstruktion wird verwendet, indem ein Objekt der Klasse MonoTouch.Dialog.BindingContext erstellt wird. Die Methode akzeptiert drei Parameter: (1) Ein Objekt, das zum Auflösen von Tap-Zielen verwendet wird, (2) Das Objekt, das bearbeitet wird, und (3) einen Titel dafür.

Die Benutzeroberfläche wird basierend auf dem Typ des zu bearbeitenden Objekts erstellt. Der Typ kann Objekte der folgenden Typen enthalten: string, bool, enumerations, floats, integers, DateTime, T:MonoTouch.UIKit.UIImage . Diese können mit einer Handvoll Attributen versehen werden, die die Ui-Generierung antreiben.

Hier wird ein sehr einfaches Dialogfeld mit einem Kontrollkästchen angezeigt:

class Settings {
    public bool AirplaneMode;
}

Oben wird eine Seite generiert, die ein einzelnes Element mit der Beschriftung "Flugzeugmodus" und einem Ein-/Aus-Schalter enthält. Die Beschriftung wird basierend auf dem Feldnamen berechnet. In diesem Fall wird "AirplaneMode" zu "Flugzeugmodus". MonoTouch.Dialogs unterstützt andere Konventionen, sodass "AirplaneMode", "airplaneMode" und "airplane_mode" alle die gleiche Beschriftung "Flugzeugmodus" erzeugen.

Wenn Sie die tatsächliche Beschriftung steuern müssen (z. B. um Sonderzeichen einzuschließen, eine andere Schreibweise zu verwenden oder eine vorhandene Klasse wiederverwenden), müssen Sie nur das [Caption]-Attribut an Ihre Variable anfügen, wie folgt:

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

Die Dialoginhalte werden in der gleichen Reihenfolge gerendert, in der die Felder in der -Klasse deklariert werden. Sie können das [Section]-Attribut verwenden, um Informationen in sinnvollen Abschnitten zu gruppieren. Sie können das [Section]-Attribut auf verschiedene Arten verwenden:

[Section]

Dadurch wird ein neuer Abschnitt ohne Kopf- oder Fußzeilen erstellt.

[Section (header)]

>> Erstellt einen neuen Abschnitt mit dem angegebenen Header und ohne Fußzeile.

[Section (header, footer)]

>> Erstellt einen neuen Abschnitt mit der angegebenen Kopf- und Fußzeile.

Dies sind die aktuellen Widgets, die von der Reflexions-API unterstützt werden:

Zeichenfolgenkonstanten und Schaltflächen.

Verwenden Sie den Zeichenfolgentyp. Wenn der Typ über einen Wert verfügt, wird neben der Beschriftung der Wert auf der rechten Seite gerendert.

Sie können das [OnTap]-Attribut ihrer Zeichenfolge hinzufügen, um bei Bedarf eine Methode aufzurufen.

Sie können der Zeichenfolge das [Multiline]-Attribut hinzufügen, um die Zelle in mehreren Zeilen zu rendern. Und Sie können das [Html]-Attribut für eine Zeichenfolge verwenden. In diesem Fall sollte der Wert der Zeichenfolge die URL enthalten, die in die eingebettete UIWebView geladen werden soll.

Das [Aligntment]-Attribut akzeptiert einen Parameter mit uiTextAlingment, der bestimmt, wie die Zeichenfolge gerendert werden soll.

Beispiele:

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;

Texteingabe- und Kennworteinträge.

Verwenden Sie den Zeichenfolgentyp für Ihr Feld, und kommentieren Sie die Zeichenfolge mit dem [Entry]-Attribut. Wenn Sie ein Argument für das [Entry]-Attribut angeben, wird es als abgeblendeter Platzhalterwert für das UITextField verwendet.

Verwenden Sie das Attribut [Password] anstelle von [Entry], um eine sichere Eingabezeile zu erstellen.

Beispiele:


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

[Entry]
public string StreetName;

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

Sie können auch sowohl den Platzhalter als auch den Tastaturtyp angeben, der für den Eintrag verwendet werden soll, indem Sie einige der Entry-Attribute verwenden:

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

Ein-/Ausschalter

Verwenden Sie einen bool-Wert, um eine Ein/Aus-Einstellung zu speichern. Standardmäßig erhalten Sie einen Ein/Aus-Schalter, aber Sie können dieses Verhalten ändern, um stattdessen ein Kontrollkästchen anzuzeigen, indem Sie das Attribut [Checkbox] verwenden:

Beispiele:

bool OnOffSwitch;

[Checkbox]
bool ReadyToRun;

Floatwerte

Wenn Sie einen Float in Ihrer Quelle verwenden, wird ein Schieberegler auf dem Bildschirm bereitgestellt. Sie können die Bereiche der Werte mithilfe des Attributs [Bereich (niedrig, hoch)] steuern. Andernfalls wird standardmäßig ein Wert zwischen 0 und 1 bearbeitet.

Beispiele:

float brightness;

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

Datumsbearbeitung

Verwenden Sie ein "DateTime"-Objekt in Ihrer Klasse, um eine Datumsauswahl anzuzeigen.

Standardmäßig stellt dies einen Datums- und Uhrzeit-Editor bereit. Wenn Sie nur das Datum bearbeiten möchten, legen Sie das Attribut [Date] fest, wenn Sie nur die Uhrzeit bearbeiten möchten, legen Sie das Attribut [Time] fest:

Beispiele:


[Date]
DateTime birthday;

[Time]
DateTime alarm;

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

Enumerationswert

Monotouch.Dialogs wandelt eine Enumeration automatisch in eine Radioauswahl um. Geben Sie lediglich die Enumeration in Ihrer Datei an:

Beispiele:

enum SeatPreference { Window, Aisle, MiddleSeat }

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

Bilder

Variablen mit dem Typ UIImage rendern das Bild als Miniaturansicht und rufen die Bildauswahl auf, wenn sie darauf tippen.

Beispiele:

UIImage ProfilePicture;

Einige Felder ignorieren

Wenn Sie ein bestimmtes Feld ignorieren möchten, wenden Sie einfach das [Skip]-Attribut auf das Feld an.

Beispiele:

[Skip] Guid UniquId;

Geschachtelte Dialoge

Um geschachtelte Dialoge zu erstellen, verwenden Sie einfach eine geschachtelte Klasse, der Reflektionsbinder erstellt die erforderlichen Navigationsbits basierend auf dem Containermodell.

Der Wert für ein geschachteltes Dialogfeld darf nicht NULL sein.

Beispiele:

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

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

So initialisieren Sie Folgendes:


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

IEnumerable als Funkquelle

Sie können einen beliebigen Typ verwenden, der IEnumerable implementiert, einschließlich generics (die IEnumerable implementieren) als Quelle von Werten zum Erstellen eines One-of-Many-Selektors, ähnlich der radioähnlichen Auswahl, die Sie von einer Enumeration erhalten.

Um dies zu verwenden, benötigen Sie einen int-Wert, für den das [RadioSelection]-Attribut festgelegt ist, um den Wert zu enthalten, der beim Start ausgewählt wird, und auch, um den neuen Wert zu speichern, wenn er fertig ist.

Zum Beispiel:

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

Der gerenderte Wert ist der Wert, der durch Aufrufen von ToString() für den von IEnumerable zurückgegebenen Wert gerendert wird.

Erstellen eines Dialogfelds aus dem Objekt

Nachdem Sie Ihre Klasse mit den richtigen Attributen erstellt haben, erstellen Sie einen Bindungskontext wie folgt:

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

Dadurch werden die Informationen gerendert. Um die Werte nach der Bearbeitung wieder abzurufen, müssen Sie den Kontext aufrufen. Ruft () ab. Sie können dies über Ihren bevorzugten Handler tun, und an diesem Punkt können Sie auch den Kontext aufrufen. Dispose(), um den Gc bei der Freigabe großer Ressourcen zu unterstützen, die er möglicherweise innehatte.

Konstruktoren

BindingContext(Object, Object, String)

Erstellt einen Bindungskontext mit den angegebenen Parametern.

Felder

Root

Das erstellte RootElement, das Sie an einen DialogViewController übergeben können.

Methoden

Dispose()
Dispose(Boolean)
Fetch()

Ruft die Daten ab, die vom Benutzer bearbeitet wurden, und speichert sie wieder im ursprünglichen Objekt, das an bindingContext übergeben wurde.

Gilt für: