Udostępnij za pośrednictwem


BindingMode Wyliczenie

Definicja

Kierunek propagacji zmian dla powiązań.

public enum class BindingMode
public enum BindingMode
type BindingMode = 
Public Enum BindingMode
Dziedziczenie
BindingMode

Pola

Nazwa Wartość Opis
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.

TwoWay 1

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

OneWay 2

Wskazuje, że powiązanie powinno propagować zmiany tylko ze źródła (zazwyczaj 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ć zmiany tylko z obiektu docelowego (BindableObject) do źródła (zazwyczaj modelu widoku). Jest to używane głównie w przypadku wartości bindableProperty tylko do odczytu.

OneTime 4

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

Uwagi

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