BindingMode Wyliczenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 |
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"