다음을 통해 공유


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)

Source:
BindableObjectExtensions.cs
Source:
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)

Source:
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}";

적용 대상