BindingMode Énumération

Définition

Direction de la propagation des modifications pour les liaisons.

public enum BindingMode
type BindingMode = 
Héritage
BindingMode

Champs

Default 0

Dans les liaisons, indique que la liaison doit utiliser le DefaultBindingMode. Dans la déclaration BindableProperty, sa valeur par défaut est BindingMode.OneWay.

OneTime 4

Indique que la liaison sera appliquée uniquement lorsque le contexte de liaison change et que la valeur ne sera pas surveillée pour les modifications avec INotifyPropertyChanged.

OneWay 2

Indique que la liaison doit uniquement propager les modifications depuis la source (généralement le modèle de vue) vers la cible (BindableObject). Il s’agit du mode par défaut pour la plupart des valeurs BindableProperty.

OneWayToSource 3

Indique que la liaison doit uniquement propager les modifications depuis la cible (BindableObject) vers la source (généralement le modèle de vue). Principalement utilisé pour les valeurs BindableProperty en lecture seule.

TwoWay 1

Indique que la liaison doit propager les modifications depuis la source (généralement le modèle de vue) vers la cible (BindableObject) dans les deux directions.

Remarques

Les exemples suivants illustrent certains cas d’usage 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"

S’applique à