共用方式為


BindableObjectExtensions.SetBinding 方法

定義

多載

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

建立並將繫結套用至屬性。

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

在來源物件上的 屬性與目標物件上的屬性之間建立系結。

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

來源:
BindableObjectExtensions.cs
來源:
BindableObjectExtensions.cs

建立並將繫結套用至屬性。

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)

參數

targetProperty
BindableProperty

要在其上設定繫結的 BindableProperty。

path
String

指出要繫結屬性路徑的 String

mode
BindingMode

此繫結的 BindingMode。 這是選擇性參數。 預設值為 Default

converter
IValueConverter

繫結的 IValueConverter。 這是選擇性參數。 預設值為 null

stringFormat
String

針對繫結,要作為 stringFormat 使用的字串。 這是選擇性參數。 預設值為 null

備註

下列範例示範如何使用擴充方法來設定系結。

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"

適用於

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

來源:
BindableObjectExtensions.cs

在來源物件上的 屬性與目標物件上的屬性之間建立系結。

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)

類型參數

TSource

來源類型。

TProperty

屬性型別。

參數

targetProperty
BindableProperty

BindableProperty 設定系結的 。

getter
Func<TSource,TProperty>

用來擷取來源屬性的 getter 方法。

mode
BindingMode

繫結模式。 這個屬性為選擇性。 預設值為 Default

converter
IValueConverter

轉換器。 這是選擇性參數。 預設值為 null

converterParameter
Object

要傳遞至轉換器的使用者定義參數。 這是選擇性參數。 預設值為 null

stringFormat
String

字串格式。 這是選擇性參數。 預設值為 null

source
Object

作為此繫結來源的物件。 這是選擇性參數。 預設值為 null

fallbackValue
Object

如果沒有指定的值存在,則為要使用的值,而不是屬性的預設值。

targetNullValue
Object

當系結的目標為 null時,要為系結屬性提供的值。

例外狀況

備註

下列範例說明如何使用擴充方法設定系結。

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"

並非所有方法都可以用來定義系結。 表達式必須是簡單的屬性存取表達式。 以下是有效和無效表達式的範例:

// 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}";

適用於