Compartir a través de


BindableObjectExtensions.SetBinding Método

Definición

Sobrecargas

SetBinding(BindableObject, BindableProperty, String, BindingMode, IValueConverter, String)

Crea y aplica un enlace a una propiedad.

SetBinding<TSource,TProperty>(BindableObject, BindableProperty, Func<TSource,TProperty>, BindingMode, IValueConverter, Object, String, Object, Object, Object)

Crea un enlace entre una propiedad en el objeto de origen y una propiedad en el objeto de destino.

SetBinding(BindableObject, BindableProperty, String, BindingMode, IValueConverter, String)

Source:
BindableObjectExtensions.cs
Source:
BindableObjectExtensions.cs

Crea y aplica un enlace a una propiedad.

public static void SetBinding (this Microsoft.Maui.Controls.BindableObject self, Microsoft.Maui.Controls.BindableProperty targetProperty, string path, Microsoft.Maui.Controls.BindingMode mode = Microsoft.Maui.Controls.BindingMode.Default, Microsoft.Maui.Controls.IValueConverter converter = default, string stringFormat = default);
static member SetBinding : Microsoft.Maui.Controls.BindableObject * Microsoft.Maui.Controls.BindableProperty * string * Microsoft.Maui.Controls.BindingMode * Microsoft.Maui.Controls.IValueConverter * string -> unit
<Extension()>
Public Sub SetBinding (self As BindableObject, targetProperty As BindableProperty, path As String, Optional mode As BindingMode = Microsoft.Maui.Controls.BindingMode.Default, Optional converter As IValueConverter = Nothing, Optional stringFormat As String = Nothing)

Parámetros

targetProperty
BindableProperty

BindableProperty en la que se va a establecer un enlace.

path
String

Clase String que indica la ruta de acceso a la propiedad a la que se va a enlazar.

mode
BindingMode

El BindingMode del enlace. Este parámetro es opcional. El valor predeterminado es Default.

converter
IValueConverter

Interfaz IValueConverter del enlace. Este parámetro es opcional. El valor predeterminado es null.

stringFormat
String

Cadena usada como stringFormat para el enlace. Este parámetro es opcional. El valor predeterminado es null.

Comentarios

En el ejemplo siguiente se muestra cómo usar el método de extensión para establecer un enlace.

public class PersonViewModel
{
    public string Name { get; set; }
    public string Company { get; set; }
}

// ...

var vm = new PersonViewModel {
    Name = "John Doe", 
    Company = "Xamarin"
}

var label = new Label ();
label.SetBinding (Label.TextProperty, "Name"); // "Name" is the property on the view model
label.BindingContext = vm;

Debug.WriteLine (label.Text); // prints "John Doe"

Se aplica a

SetBinding<TSource,TProperty>(BindableObject, BindableProperty, Func<TSource,TProperty>, BindingMode, IValueConverter, Object, String, Object, Object, Object)

Source:
BindableObjectExtensions.cs

Crea un enlace entre una propiedad en el objeto de origen y una propiedad en el objeto de destino.

public static void SetBinding<TSource,TProperty> (this Microsoft.Maui.Controls.BindableObject self, Microsoft.Maui.Controls.BindableProperty targetProperty, Func<TSource,TProperty> getter, Microsoft.Maui.Controls.BindingMode mode = Microsoft.Maui.Controls.BindingMode.Default, Microsoft.Maui.Controls.IValueConverter? converter = default, object? converterParameter = default, string? stringFormat = default, object? source = default, object? fallbackValue = default, object? targetNullValue = default);
static member SetBinding : Microsoft.Maui.Controls.BindableObject * Microsoft.Maui.Controls.BindableProperty * Func<'Source, 'Property> * Microsoft.Maui.Controls.BindingMode * Microsoft.Maui.Controls.IValueConverter * obj * string * obj * obj * obj -> unit
<Extension()>
Public Sub SetBinding(Of TSource, TProperty) (self As BindableObject, targetProperty As BindableProperty, getter As Func(Of TSource, TProperty), Optional mode As BindingMode = Microsoft.Maui.Controls.BindingMode.Default, Optional converter As IValueConverter = Nothing, Optional converterParameter As Object = Nothing, Optional stringFormat As String = Nothing, Optional source As Object = Nothing, Optional fallbackValue As Object = Nothing, Optional targetNullValue As Object = Nothing)

Parámetros de tipo

TSource

Tipo de origen.

TProperty

El tipo de propiedad.

Parámetros

targetProperty
BindableProperty

en BindableProperty el que se va a establecer un enlace.

getter
Func<TSource,TProperty>

Método getter usado para recuperar la propiedad de origen.

mode
BindingMode

Modo de enlace. Esta propiedad es opcional. El valor predeterminado es Default.

converter
IValueConverter

Convertidor. Este parámetro es opcional. El valor predeterminado es null.

converterParameter
Object

Parámetro definido por el usuario que pasar al convertidor. Este parámetro es opcional. El valor predeterminado es null.

stringFormat
String

Formato de cadena. Este parámetro es opcional. El valor predeterminado es null.

source
Object

Objeto utilizado como origen de este enlace. Este parámetro es opcional. El valor predeterminado es null.

fallbackValue
Object

Valor que se va a usar en lugar del valor predeterminado de la propiedad, si no existe ningún valor especificado.

targetNullValue
Object

Valor que se va a proporcionar para una propiedad enlazada cuando el destino del enlace es null.

Excepciones

Comentarios

En el ejemplo siguiente se muestra la configuración de un enlace mediante el método de extensión.

public class PersonViewModel
{
    public string Name { get; set; }
    public Address? Address { get; set; }
    // ...
}

var vm = new PersonViewModel { Name = "John Doe" };

var label = new Label();
label.SetBinding(Label.TextProperty, static (PersonViewModel vm) => vm.Name);
label.BindingContext = vm;

vm.Name = "Jane Doe";
Debug.WriteLine(label.Text); // prints "Jane Doe"

No todos los métodos se pueden usar para definir un enlace. La expresión debe ser una expresión de acceso de propiedad simple. A continuación se muestran ejemplos de expresiones válidas e no válidas:

// Valid: Property access
static (PersonViewModel vm) => vm.Name;
static (PersonViewModel vm) => vm.Address?.Street;

// Valid: Array and indexer access
static (PersonViewModel vm) => vm.PhoneNumbers[0];
static (PersonViewModel vm) => vm.Config["Font"];

// Valid: Casts
static (Label label) => (label.BindingContext as PersonViewModel).Name;
static (Label label) => ((PersonViewModel)label.BindingContext).Name;

// Invalid: Method calls
static (PersonViewModel vm) => vm.GetAddress();
static (PersonViewModel vm) => vm.Address?.ToString();

// Invalid: Complex expressions
static (PersonViewModel vm) => vm.Address?.Street + " " + vm.Address?.City;
static (PersonViewModel vm) => $"Name: {vm.Name}";

Se aplica a