BindingMode Enumeration

Definition

Die Richtung der Änderungsweitergabe für Bindungen.

public enum BindingMode
type BindingMode = 
Vererbung
BindingMode

Felder

Default 0

Gibt bei der Verwendung in Bindungen an, dass die Bindung die DefaultBindingMode-Eigenschaft verwenden sollte. Legt bei der Verwendung in BindableProperty-Deklarationen standardmäßig die BindingMode.OneWay-Enumeration fest.

OneTime 4

Gibt an, dass die Bindung nur angewendet wird, wenn sich der Bindungskontext ändert und der Wert nicht auf Änderungen mit INotifyPropertyChangedüberwacht wird.

OneWay 2

Gibt an, dass die Bindung nur Änderungen von der Quelle (in der Regel das Ansichtsmodell) an das Ziel (BindableObject-Klasse) weitergegeben soll. Dies ist der Standardmodus für die meisten BindableProperty-Werte.

OneWayToSource 3

Gibt an, dass die Bindung nur Änderungen vom Ziel (BindableObject-Klasse) an die Quelle (in der Regel das Ansichtsmodell) weitergegeben soll. Dies wird hauptsächlich für schreibgeschützte BindableProperty-Werte verwendet.

TwoWay 1

Gibt an, dass die Bindung Änderungen in beide Richtungen, d.h. von der Quelle (in der Regel das Ansichtsmodell) an das Ziel (BindableObject-Klasse) bzw. anders herum, weitergegeben soll.

Hinweise

Die folgenden Beispiele zeigen einige BindingMode-Anwendungsfälle.

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"

Gilt für: