BindingContext 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
用來將結構和類別對應至 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 的原始物件。 |