Condividi tramite


BindingMode Enumerazione

Definizione

La direzione di propagazione delle modifiche per le associazioni.

public enum class BindingMode
public enum BindingMode
type BindingMode = 
Public Enum BindingMode
Ereditarietà
BindingMode

Campi

Nome Valore Descrizione
Default 0

Se usato nelle associazioni, indica che l'associazione deve usare l'oggetto DefaultBindingMode. Se usato nella dichiarazione BindableProperty, per impostazione predefinita è BindingMode.OneWay.

TwoWay 1

Indica che l'associazione deve propagare le modifiche dall'origine (in genere il modello di visualizzazione) alla destinazione (BindableObject) in entrambe le direzioni.

OneWay 2

Indica che l'associazione deve propagare le modifiche solo dall'origine (in genere il modello di visualizzazione) alla destinazione (BindableObject). Questa è la modalità predefinita per la maggior parte dei valori BindableProperty.

OneWayToSource 3

Indica che l'associazione deve propagare le modifiche solo dalla destinazione (BindableObject) all'origine (in genere il modello di visualizzazione). Questa opzione viene usata principalmente per i valori BindableProperty di sola lettura.

OneTime 4

Indica che l'associazione verrà applicata solo quando il contesto di associazione cambia e il valore non verrà monitorato per le modifiche con INotifyPropertyChanged.

Commenti

Gli esempi seguenti illustrano alcuni casi d'uso di 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"

Si applica a