Udostępnij za pośrednictwem


BindingMode Wyliczenie

Definicja

Kierunek propagacji zmian dla powiązań.

public enum BindingMode
type BindingMode = 
Dziedziczenie
System.Enum
BindingMode

Pola

Default 0

W przypadku użycia w powiązaniach wskazuje, że powiązanie powinno używać elementu DefaultBindingMode. W przypadku użycia w deklaracji BindableProperty wartość domyślna to BindingMode.OneWay.

OneTime 4

Wskazuje, że powiązanie zostanie zastosowane tylko wtedy, gdy kontekst powiązania ulegnie zmianie, a wartość nie zostanie monitorowana pod kątem zmian za pomocą polecenia INotifyPropertyChanged.

OneWay 2

Wskazuje, że powiązanie powinno propagować zmiany tylko ze źródła (zwykle modelu widoku) do elementu docelowego (bindableObject). Jest to tryb domyślny dla większości wartości BindableProperty.

OneWayToSource 3

Wskazuje, że powiązanie powinno propagować tylko zmiany z obiektu docelowego (bindableObject) do źródła (zwykle model widoku). Jest to używane głównie w przypadku wartości bindableProperty tylko do odczytu.

TwoWay 1

Wskazuje, że powiązanie powinno propagować zmiany ze źródła (zwykle modelu widoku) do elementu docelowego (bindableObject) w obu kierunkach.

Uwagi

W poniższych przykładach przedstawiono niektóre przypadki użycia metody 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"

Dotyczy