다음을 통해 공유


BindingContext 클래스

정의

MonoTouch.Dialog의 사용자 인터페이스 요소에 구조체 및 클래스를 매핑하는 데 사용되는 도우미 클래스입니다.

public class BindingContext : IDisposable
type BindingContext = class
    interface IDisposable
상속
BindingContext
구현

설명

리플렉션 기반 대화 상자 생성은 MonoTouch.Dialog.BindingContext 클래스의 개체를 만드는 데 사용되며, 메서드는 세 개의 매개 변수를 사용합니다. (1) 탭 대상을 확인하는 데 사용할 개체, (2) 편집할 개체 및 (3) 제목입니다.

사용자 인터페이스는 편집 중인 개체의 형식에 따라 생성됩니다. 형식에는 문자열, 부울, 열거형, 부동 소수점, 정수, DateTime, T:MonoTouch.UIKit.UIImage 등의 개체가 포함될 수 있으며, 이러한 개체는 UI 생성을 구동하는 몇 가지 특성으로 추가로 데코레이트할 수 있습니다.

확인란을 포함하는 매우 간단한 대화 상자는 다음과 같습니다.

class Settings {
    public bool AirplaneMode;
}

위에서는 "비행기 모드" 캡션과 켜기/끄기 스위치가 있는 단일 항목이 포함된 페이지를 생성합니다. 캡션은 필드 이름을 기반으로 계산됩니다. 이 경우 "AirplaneMode"는 "비행기 모드"가 됩니다. MonoTouch.Dialogs는 다른 규칙을 지원하므로 "AirplaneMode", "airplaneMode" 및 "airplane_mode"는 모두 동일한 캡션 "비행기 모드"를 생성합니다.

실제 캡션을 제어해야 하는 경우(예: 특수 문자를 포함하거나 다른 맞춤법을 사용하거나 기존 클래스를 재사용하는 경우) 다음과 같이 변수에 [Caption] 특성을 연결하면 됩니다.

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

대화 상자 콘텐츠는 필드가 클래스에 선언된 순서와 동일한 순서로 렌더링됩니다. [섹션] 특성을 사용하여 의미가 있는 섹션의 정보를 그룹화할 수 있습니다. [섹션] 특성은 다음과 같은 몇 가지 방법으로 사용할 수 있습니다.

[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 (KeyboardType=UIKeyboardType.NumberPad,Placeholder="Your Zip code")]
public string ZipCode;

켜기/끄기 스위치

bool 값을 사용하여 켜기/끄기 설정을 저장합니다. 기본적으로 켜기/끄기 스위치가 표시되지만 [ Checkbox] 특성을 사용하는 대신 확인란을 표시하도록 이 동작을 변경할 수 있습니다.

예제:

bool OnOffSwitch;

[Checkbox]
bool ReadyToRun;

Float 값

원본에서 float를 사용하면 화면에 슬라이더가 표시됩니다. [범위(낮음,높음)] 특성을 사용하여 값의 범위를 제어할 수 있습니다. 그렇지 않으면 기본값은 0에서 1 사이의 값을 편집하는 것입니다.

예제:

float brightness;

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

날짜 편집

클래스에서 "DateTime" 개체를 사용하여 날짜 선택기를 표시합니다.

기본적으로 날짜 및 시간 편집기를 제공합니다. 날짜만 편집하려면 [Date] 특성을 설정하고, 시간만 편집하려면 [시간] 특성을 설정합니다.

예제:


[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을 구현하는 모든 형식을 사용할 수 있습니다.

이를 사용하려면 [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에 전달된 원래 개체에 다시 저장합니다.

적용 대상