次の方法で共有


BindingContext クラス

定義

MonoTouch.Dialog のユーザー インターフェイス要素に構造体とクラスをマップするために使用されるヘルパー クラス。

public class BindingContext : IDisposable
type BindingContext = class
    interface IDisposable
継承
BindingContext
実装

注釈

リフレクション ベースのダイアログ構造は、MonoTouch.Dialog.BindingContext クラスのオブジェクトを作成することによって使用されます。このメソッドは、(1) Tap ターゲットの解決に使用されるオブジェクト、(2) 編集されるオブジェクト、および (3) タイトルの 3 つのパラメーターを受け取ります。

ユーザー インターフェイスは、編集するオブジェクトの種類に基づいて構築されます。 型には、string、bool、列挙型、floats、integer、DateTime の各型のオブジェクトを含めることができます。これらは、UI の生成を促進する少数の属性でさらに装飾できます。

チェック ボックスを含む非常に単純なダイアログを次に示します。

class Settings {
    public bool AirplaneMode;
}

上記では、キャプション "機内モード" とオン/オフ スイッチを含む 1 つの項目を含むページが生成されます。 キャプションはフィールド名に基づいて計算されます。 この場合、"AirplaneMode" は "機内モード" になります。 MonoTouch.Dialogs では他の規則がサポートされているため、"AirplaneMode"、"airplaneMode"、"airplane_mode" はすべて同じキャプション "機内モード" を生成します。

実際のキャプションを制御する必要がある場合 (特殊文字を含める場合、別のスペルを使用する場合、または既存のクラスを再利用する場合など)、次のように [Caption] 属性を変数にアタッチするだけで済みます。

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

ダイアログの内容は、 クラスでフィールドが宣言されているのと同じ順序でレンダリングされます。 [Section] 属性を使用すると、意味のあるセクションの情報をグループ化できます。 [Section] 属性は、いくつかの方法で使用できます。

[Section]

これにより、ヘッダーやフッターを含まない新しいセクションが作成されます。

[Section (header)]

>> 指定したヘッダーとフッターを含まない新しいセクションを作成します。

[Section (header, footer)]

>> 指定したヘッダーとフッターを使用して新しいセクションを作成します。

リフレクション API でサポートされている現在のウィジェットは次のとおりです。

文字列定数とボタン。

文字列型を使用します。 型に値がある場合は、キャプションの表示に加えて、その値が右側にレンダリングされます。

[OnTap] 属性を文字列に追加して、オンデマンドでメソッドを呼び出すことができます。

[Multiline] 属性を文字列に追加して、セルを複数行でレンダリングできます。 また、文字列に [Html] 属性を使用できます。その場合、文字列の値には、埋め込まれた UIWebView に読み込む URL が含まれている必要があります。

[Aligntment] 属性は、文字列のレンダリング方法を決定する UITextAlingment パラメーターを受け取ります

例 :

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;

テキストエントリとパスワードエントリ。

フィールドの文字列型を使用し、[Entry] 属性を使用して文字列に注釈を付けます。 [Entry] 属性に引数を指定すると、UITextField のグレー表示のプレースホルダー値として使用されます。

セキュリティで保護されたエントリ行を作成するには、[Entry] の代わりに [Password] 属性を使用します。

例 :


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

[Entry]
public string StreetName;

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

Entry 属性をいくつか使用して、Entry で使用するプレースホルダーとキーボードの種類の両方を指定することもできます。

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

オン/オフ スイッチ

ブール値を使用してオン/オフ設定を格納します。既定ではオン/オフ スイッチが表示されますが、[チェックボックス] 属性を使用して、この動作を変更するだけでチェックボックスを表示できます。

例 :

bool OnOffSwitch;

[Checkbox]
bool ReadyToRun;

Float 値

ソースで float を使用すると、画面にスライダーが表示されます。 [Range (low,high)] 属性を使用して、値の範囲を制御できます。 それ以外の場合、既定値は 0 ~ 1 の値を編集します。

例 :

float brightness;

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

日付の編集

クラスで "DateTime" オブジェクトを使用して、日付ピッカーを表示します。

既定では、日付と時刻のエディターが提供されます。日付のみを編集する場合は、[Date] 属性を設定します。時刻のみを編集する場合は、[Time] 属性を設定します。

例 :


[Date]
DateTime birthday;

[Time]
DateTime alarm;

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

列挙値

Monotouch.Dialogs は、列挙体をラジオ選択に自動的に変換します。 ファイルで列挙を指定するだけです。

例 :

enum SeatPreference { Window, Aisle, MiddleSeat }

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

画像

UIImage 型の変数は、画像をサムネイルとしてレンダリングし、タップした場合にイメージ ピッカーを呼び出します。

例 :

UIImage ProfilePicture;

一部のフィールドを無視する

特定のフィールドを無視する場合は、[Skip] 属性をフィールドに適用するだけです。

例 :

[Skip] Guid UniquId;

入れ子になったダイアログ

入れ子になったダイアログを作成するには、入れ子になったクラスを使用するだけで、リフレクション バインダーによってコンテナー モデルに基づいて必要なナビゲーション ビットが作成されます。

入れ子になったダイアログの値を null にすることはできません。

例 :

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

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

初期化するには:


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

IEnumerable as a Radio Source

列挙体から取得するラジオのような選択と同様に、一対多セレクターを作成するための値のソースとして、ジェネリック (IEnumerable を実装する) を含む IEnumerable を実装する任意の型を使用できます。

これを使用するには、起動時に選択される値を保持し、完了時に新しい値を保持するために [RadioSelection] 属性が設定された int 値が必要です。

次に例を示します。

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

レンダリングされる値は、IEnumerable によって返される値に対して ToString() を呼び出すことによってレンダリングされる値です。

オブジェクトからのダイアログの作成

適切な属性を使用してクラスを作成したら、次のようにバインド コンテキストを作成します。

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

これにより、情報がレンダリングされます。 編集後に値をフェッチし直すには、コンテキストを呼び出す必要があります。フェッチ ()。 これは、お気に入りのハンドラーから行うことができます。その時点でコンテキストを呼び出すこともできます。Dispose() は、GC が保持している可能性がある大規模なリソースを解放するのに役立つ。

コンストラクター

BindingContext(Object, Object, String)

指定したパラメーターを使用してバインディング コンテキストを作成します。

フィールド

Root

DialogViewController に渡すことができる生成された RootElement。

メソッド

Dispose()
Dispose(Boolean)
Fetch()

ユーザーによって編集されたデータを取得し、BindingContext に渡された元のオブジェクトに格納します。

適用対象