Compartilhar via


BindingMode Enumeração

Definição

A direção da propagação de alterações para associações.

public enum class BindingMode
public enum BindingMode
type BindingMode = 
Public Enum BindingMode
Herança
BindingMode

Campos

Nome Valor Description
Default 0

Quando usado em Associações, indica que a Associação deve usar o DefaultBindingMode. Quando usado em declaração de BindableProperty, usa como padrão BindingMode.OneWay.

TwoWay 1

Indica que a associação deve propagar alterações da origem (geralmente, o Modelo de Exibição) para o destino (o BindableObject) em ambas as direções.

OneWay 2

Indica que a associação deve apenas propagar alterações da origem (geralmente, o Modelo de Exibição) para o destino (o BindableObject). Esse é o modo padrão para a maioria dos valores de BindableProperty.

OneWayToSource 3

Indica que a associação deve propagar apenas alterações do destino (o BindableObject) para a origem (geralmente, o Modelo de Exibição). Isso é usado principalmente para os valores de BindableProperty somente leitura.

OneTime 4

Indica que a associação será aplicada somente quando o contexto de associação for alterado e o valor não será monitorado para alterações com INotifyPropertyChanged.

Comentários

Os exemplos a seguir mostram alguns casos de uso do BindingMode.

public class PersonViewModel
{
  public string Name { get; set; }
  public string Company { get; set; }
}

Label label;
PersonViewModel viewmodel;

//BindingMode.OneWay
label = new Label ();
label.BindingContext = viewmodel = new PersonViewModel ();
label.SetBinding<PersonViewModel> (Label.TextProperty, vm => vm.Name, mode: BindingMode.OneWay);

viewmodel.Name = "John Doe";
Debug.WriteLine (label.Text); //prints ""
label.Text = "Foo";
Debug.WriteLine (viewmodel.Name); //prints "John Doe"


//BindingMode.TwoWay
label = new Label ();
label.BindingContext = viewmodel = new PersonViewModel ();
label.SetBinding<PersonViewModel> (Label.TextProperty, vm => vm.Name, mode: BindingMode.TwoWay);

viewmodel.Name = "John Doe";
Debug.WriteLine (label.Text); //prints "John Doe"
label.Text = "Foo";
Debug.WriteLine (viewmodel.Name); //prints "Foo"


//BindingMode.OneWayToSource
label = new Label ();
label.BindingContext = viewmodel = new PersonViewModel ();
label.SetBinding<PersonViewModel> (Label.TextProperty, vm => vm.Name, mode: BindingMode.OneWayToSource);

viewmodel.Name = "John Doe";
Debug.WriteLine (label.Text); //prints ""
label.Text = "Foo";
Debug.WriteLine (viewmodel.Name); //prints "Foo"

Aplica-se a