BindingMode Enumeration
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Die Richtung der Änderungsweitergabe für Bindungen.
public enum class BindingMode
public enum BindingMode
type BindingMode =
Public Enum 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. |
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. |
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. |
OneTime | 4 | Gibt an, dass die Bindung nur angewendet wird, wenn sich der Bindungskontext ändert und der Wert nicht auf Änderungen überwacht wird. |
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"