次の方法で共有


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

適用対象