Compartilhar via


BindableObjectExtensions.SetBinding Método

Definição

Sobrecargas

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

Cria e aplica uma associação a uma propriedade.

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

Cria uma associação entre uma propriedade no objeto de origem e uma propriedade no objeto de destino.

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

Origem:
BindableObjectExtensions.cs
Origem:
BindableObjectExtensions.cs

Cria e aplica uma associação a uma propriedade.

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

A BindableProperty na qual definir uma associação.

path
String

Uma String que indica o caminho da propriedade à qual associar.

mode
BindingMode

O BindingMode para a associação. Esse parâmetro é opcional. O padrão é Default.

converter
IValueConverter

Um IValueConverter para a associação. Esse parâmetro é opcional. O padrão é null.

stringFormat
String

Uma cadeia de caracteres usada como stringFormat para a associação. Esse parâmetro é opcional. O padrão é null.

Comentários

O exemplo a seguir mostra como usar o método de extensão para definir uma associação.

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"

Aplica-se a

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

Origem:
BindableObjectExtensions.cs

Cria uma associação entre uma propriedade no objeto de origem e uma propriedade no 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

O tipo de origem.

TProperty

O tipo da propriedade.

Parâmetros

targetProperty
BindableProperty

O BindableProperty no qual definir uma vinculação.

getter
Func<TSource,TProperty>

Um método getter usado para recuperar a propriedade source.

mode
BindingMode

O modo de associação. Essa propriedade é opcional. O padrão é Default.

converter
IValueConverter

O conversor. Esse parâmetro é opcional. O padrão é null.

converterParameter
Object

Um parâmetro definido pelo usuário a passar para o conversor. Esse parâmetro é opcional. O padrão é null.

stringFormat
String

Um formato da Cadeia de Caracteres. Esse parâmetro é opcional. O padrão é null.

source
Object

Um objeto usado como origem para essa associação. Esse parâmetro é opcional. O padrão é null.

fallbackValue
Object

O valor a ser usado em vez do valor padrão da propriedade, se não houver nenhum valor especificado.

targetNullValue
Object

O valor a ser fornecido para uma propriedade associada quando o destino da associação é null.

Exceções

Comentários

O exemplo a seguir ilustra a configuração de uma associação usando o método de extensão.

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"

Nem todos os métodos podem ser usados para definir uma associação. A expressão deve ser uma expressão de acesso de propriedade simples. Veja a seguir exemplos de expressões válidas e invá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}";

Aplica-se a