Compartir a través de


BindingMode Enumeración

Definición

Dirección de la propagación de cambios para enlaces.

public enum BindingMode
type BindingMode = 
Herencia
System.Enum
BindingMode

Campos

Default 0

Cuando se usa en enlaces, indica que el enlace debe utilizar el DefaultBindingMode. Cuando se utiliza en la declaración de BindableProperty, se establece de forma predeterminada en BindingMode.OneWay.

OneTime 4

Indica que el enlace solo se aplicará cuando cambie el contexto de enlace y el valor no se supervisará para los cambios con INotifyPropertyChanged.

OneWay 2

Indica que el enlace solo debe propagar cambios desde el origen (normalmente, el modelo de vista) al destino (BindableObject). Este es el modo predeterminado de la mayoría de los valores de BindableProperty.

OneWayToSource 3

Indica que el enlace solo debe propagar cambios desde el destino (BindableObject) al origen (normalmente, el modelo de vista). Se usa principalmente en valores de BindableProperty de solo lectura.

TwoWay 1

Indica que el enlace debe propagar cambios desde el origen (normalmente, el modelo de vista) al destino (BindableObject), en ambos sentidos.

Comentarios

En los ejemplos siguientes se muestran algunos casos de uso de 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"

Se aplica a