共用方式為


BindingContext 類別

定義

用來將結構和類別對應至 MonoTouch.Dialog 中使用者介面元素的 Helper 類別。

public class BindingContext : IDisposable
type BindingContext = class
    interface IDisposable
繼承
BindingContext
實作

備註

以反映為基礎的對話方塊建構是透過建立 MonoTouch.Dialog.BindingCoNtext 類別的物件來使用,此方法會採用三個參數: (1) 將用來解析 Tap 目標的物件, (2) 將編輯並 (3 的物件) 標題。

使用者介面是根據要編輯的物件類型來建構。 此類型可以包含下列類型的物件:string、bool、enumerations、floats、integers、 DateTime,而且這些屬性可以進一步裝飾這些屬性來驅動 UI 產生。

包含核取方塊的簡單對話方塊如下所示:

class Settings {
    public bool AirplaneMode;
}

上述內容會產生一個頁面,其中包含標題為「飛機模式」和開/關開關的單一專案。 標題是根據功能變數名稱來計算。 在此情況下,「AirplaneMode」 會變成「飛機模式」。 MonoTouch.Dialogs 支援其他慣例,因此 「AirplaneMode」、「airplaneMode」 和 「airplane_mode」 全都會產生相同的標題 「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 的灰色預留位置值。

使用 [Password] 屬性,而不是 [Entry] 來建立安全專案行。

範例:


[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 值來儲存開啟/關閉設定,根據預設,您將會收到開啟/關閉參數,但您可以變更此行為來只顯示覆選框,方法是使用 [核取方塊] 屬性:

範例:

bool OnOffSwitch;

[Checkbox]
bool ReadyToRun;

浮點值

在來源中使用 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 作為無線電來源

您可以使用任何實作 IEnumerable 的類型,包括泛型 (實作 IEnumerable) 作為建立一對多選取器的來源,類似于您從列舉取得的類似無線電選取範圍。

若要使用此方式,您需要一個 int 值,其 [RadioSelection] 屬性已設定為保留啟動時要選取的值,並在完成時保留新值。

例如:

       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

產生的 RootElement,您可以傳遞至 DialogViewController。

方法

Dispose()
Dispose(Boolean)
Fetch()

擷取使用者編輯的資料,並將它儲存回傳遞至 BindingCoNtext 的原始物件。

適用於