Compartilhar via


BindingContext Classe

Definição

Classe auxiliar usada para mapear Estruturas e Classes em elementos de interface do usuário no MonoTouch.Dialog.

public class BindingContext : IDisposable
type BindingContext = class
    interface IDisposable
Herança
BindingContext
Implementações

Comentários

A construção da caixa de diálogo baseada em reflexão é usada criando um objeto da classe MonoTouch.Dialog.BindingContext, o método usa três parâmetros: (1) Um objeto que será usado para resolver destinos de toque, (2) O objeto que será editado e (3) um título para ele.

A interface do usuário é construída com base no tipo do objeto que está sendo editado. O tipo pode conter objetos dos seguintes tipos: cadeia de caracteres, bool, enumerações, floats, inteiros, DateTime, T:MonoTouch.UIKit.UIImage e eles podem ser decorados com um punhado de atributos que impulsionam a geração da interface do usuário.

Uma caixa de diálogo muito simples que contém uma caixa de seleção é mostrada aqui:

class Settings {
    public bool AirplaneMode;
}

O acima gerará uma página que contém um único item com a legenda "Modo Avião" e uma opção de ativação/desativação. A legenda é computada com base no nome do campo. Nesse caso, "AirplaneMode" se torna "Modo Avião". O MonoTouch.Dialogs dá suporte a outras convenções para que "AirplaneMode", "airplaneMode" e "airplane_mode" produzam a mesma legenda "Modo Avião".

Se você precisar controlar a legenda real (por exemplo, para incluir caracteres especiais, use uma ortografia diferente ou está reutilizando uma classe existente), basta anexar o atributo [Caption] à sua variável, desta forma:

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

O conteúdo da caixa de diálogo é renderizado na mesma ordem em que os campos são declarados na classe . Você pode usar o atributo [Seção] para agrupar informações em seções que fazem sentido. Você pode usar o atributo [Seção] de algumas maneiras:

[Section]

Isso cria uma nova seção, sem cabeçalhos ou rodapés.

[Section (header)]

>> Cria uma nova seção, com o cabeçalho especificado e nenhum rodapé.

[Section (header, footer)]

>> Cria uma nova seção com o cabeçalho e o rodapé especificados.

Esses são os widgets atuais compatíveis com a API de Reflexão:

Constantes de cadeia de caracteres e Botões.

Use o tipo de cadeia de caracteres. Se o tipo tiver um valor, além de mostrar a legenda, ele renderizará seu valor à direita.

Você pode adicionar o atributo [OnTap] à cadeia de caracteres para invocar um método sob demanda.

Você pode adicionar o atributo [Multiline] à cadeia de caracteres para tornar a célula renderizada em várias linhas. E você pode usar o atributo [Html] em uma cadeia de caracteres, nesse caso, o valor da cadeia de caracteres deve conter a URL a ser carregada no UIWebView inserido.

O atributo [Aligntment] usa um parâmetro UITextAlingment que determina como a cadeia de caracteres deve ser renderizada

Exemplos:

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;

Entrada de texto e entradas de senha.

Use o tipo de cadeia de caracteres para o campo e anote a cadeia de caracteres com o atributo [Entrada]. Se você fornecer um argumento para o atributo [Entry], ele será usado como o valor de espaço reservado esmaecido para o UITextField.

Use o atributo [Senha] em vez de [Entrada] para criar uma linha de entrada segura.

Exemplos:


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

[Entry]
public string StreetName;

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

Você também pode especificar o Espaço Reservado e o tipo de teclado a ser usado na Entrada usando alguns dos atributos De entrada:

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

Ativar/desativar comutadores

Use um valor bool para armazenar uma configuração de ativação/desativação, por padrão, você obterá uma opção Ativar/desligar, mas poderá alterar esse comportamento para apenas mostrar uma caixa de seleção usando o atributo [Caixa de Seleção]:

Exemplos:

bool OnOffSwitch;

[Checkbox]
bool ReadyToRun;

Valores float

Usar um float em sua origem fornecerá um controle deslizante na tela. Você pode controlar os intervalos dos valores usando o atributo [Intervalo (baixo,alto)]. Caso contrário, o padrão é editar um valor entre 0 e 1.

Exemplos:

float brightness;

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

Edição de data

Use um objeto "DateTime" em sua classe para apresentar um seletor de data.

Por padrão, isso fornecerá um editor de data e hora, se você quiser apenas editar a data, defina o atributo [Data], se você quiser apenas editar a hora, defina o atributo [Hora]:

Exemplos:


[Date]
DateTime birthday;

[Time]
DateTime alarm;

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

Valor de enumeração

Monotouch.Dialogs transformará automaticamente uma enumeração em uma seleção de rádio. Especifique apenas a enumeração em seu arquivo:

Exemplos:

enum SeatPreference { Window, Aisle, MiddleSeat }

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

Imagens

Variáveis com o tipo UIImage renderizarão a imagem como uma miniatura e invocarão o seletor de imagem se for tocado.

Exemplos:

UIImage ProfilePicture;

Ignorando alguns campos

Se você quiser ignorar um campo específico, basta aplicar o atributo [Ignorar] ao campo.

Exemplos:

[Skip] Guid UniquId;

Caixas de diálogo aninhadas

Para criar caixas de diálogo aninhadas, basta usar uma classe aninhada, o associador de reflexão criará os bits de navegação necessários com base no modelo de contêiner.

O valor de uma caixa de diálogo aninhada não deve ser nulo.

Exemplos:

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

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

Para inicializar:


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

IEnumerable como uma fonte de rádio

Você pode usar qualquer tipo que implemente IEnumerable, incluindo genéricos (que implementam IEnumerable) como uma fonte de valores para criar um seletor de um de muitos, semelhante à seleção de rádio que você obtém de uma enumeração.

Para usar isso, você precisará de um valor int que tenha o atributo [RadioSelection] definido para manter o valor que será selecionado na inicialização e também manter o novo valor quando terminar.

Por exemplo:

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

O valor renderizado é o valor renderizado chamando ToString() no valor retornado por IEnumerable.

Criando uma caixa de diálogo do objeto

Depois de criar sua classe com os atributos adequados, você cria um contexto de associação, desta forma:

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

Isso renderizará as informações. Para buscar os valores novamente após a edição, você precisa chamar o contexto. Fetch (). Você pode fazer isso no manipulador favorito e, nesse ponto, também pode chamar o contexto. Descarte() para ajudar o GC a liberar todos os recursos grandes que ele possa ter mantido.

Construtores

BindingContext(Object, Object, String)

Cria um contexto de associação com os parâmetros especificados.

Campos

Root

O RootElement produzido que você pode passar para um DialogViewController.

Métodos

Dispose()
Dispose(Boolean)
Fetch()

Recupera os dados que foram editados pelo usuário e os armazena novamente no objeto original que foi passado para BindingContext.

Aplica-se a