BindingMode Enumeración
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Dirección de la propagación de cambios para enlaces.
public enum class BindingMode
public enum BindingMode
type BindingMode =
Public Enum BindingMode
- Herencia
-
BindingMode
Campos
Nombre | Valor | Description |
---|---|---|
Default | 0 | Cuando se usa en enlaces, indica que el enlace debe utilizar el DefaultBindingMode. Cuando se utiliza en la declaración de BindableProperty, se establece de forma predeterminada en BindingMode.OneWay. |
TwoWay | 1 | Indica que el enlace debe propagar cambios desde el origen (normalmente, el modelo de vista) al destino (BindableObject), en ambos sentidos. |
OneWay | 2 | Indica que el enlace solo debe propagar cambios desde el origen (normalmente, el modelo de vista) al destino (BindableObject). Este es el modo predeterminado de la mayoría de los valores de BindableProperty. |
OneWayToSource | 3 | Indica que el enlace solo debe propagar cambios desde el destino (BindableObject) al origen (normalmente, el modelo de vista). Se usa principalmente en valores de BindableProperty de solo lectura. |
OneTime | 4 | Indica que el enlace solo se aplicará cuando cambie el contexto de enlace y el valor no se supervisará para los cambios con |
Comentarios
En los ejemplos siguientes se muestran algunos casos de uso de 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"