引数を渡す
多くの場合、引数を必要とするコンストラクターを使用するか、静的作成メソッドを呼び出してオブジェクトをインスタンス化する必要があります。 これは、.NET マルチプラットフォーム アプリ UI (.NET MAUI) XAML で、x:FactoryMethod
および x:Arguments
属性を使用して実行できます。
x:Arguments
属性は、既定以外のコンストラクターまたはファクトリ メソッド オブジェクト宣言のコンストラクター引数を指定するために使用されます。 詳細については、「コンストラクター引数を渡す」を参照してください。x:FactoryMethod
属性は、オブジェクトの初期化に使用できるファクトリ メソッドを指定するために使用されます。 詳細については、「ファクトリ メソッドを呼び出す」を参照してください。
さらに、x:TypeArguments
属性を使用して、ジェネリック型のコンストラクターにジェネリック型引数を指定できます。 詳細については、「ジェネリック型引数の指定」を参照してください。
引数は、次の .NET MAUI XAML 言語プリミティブを使用して、コンストラクターとファクトリ メソッドに渡すことができます:
x:Array
はArray
に対応します。x:Boolean
はBoolean
に対応します。x:Byte
はByte
に対応します。x:Char
はChar
に対応します。x:DateTime
はDateTime
に対応します。x:Decimal
はDecimal
に対応します。x:Double
はDouble
に対応します。x:Int16
はInt16
に対応します。x:Int32
はInt32
に対応します。x:Int64
はInt64
に対応します。x:Object
はObject
に対応しますx:Single
はSingle
に対応します。x:String
はString
に対応します。x:TimeSpan
はTimeSpan
に対応します。
x:DateTime
を除き、他の言語プリミティブは XAML 2009 仕様に含まれています。
注
x:Single
言語プリミティブを使用して float
引数を渡すことができます。
コンストラクター引数を渡す
引数は、x:Arguments
属性を使用して既定以外のコンストラクターに渡すことができます。 各コンストラクター引数は、引数の型を表す XML 要素内で区切る必要があります。
次の例では、3 つの異なるColorコンストラクターで x:Arguments
属性を使用する方法を示しています。
<BoxView HeightRequest="150"
WidthRequest="150"
HorizontalOptions="Center">
<BoxView.Color>
<Color>
<x:Arguments>
<x:Single>0.9</x:Single>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
<BoxView HeightRequest="150"
WidthRequest="150"
HorizontalOptions="Center">
<BoxView.Color>
<Color>
<x:Arguments>
<x:Single>0.25</x:Single>
<x:Single>0.5</x:Single>
<x:Single>0.75</x:Single>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
<BoxView HeightRequest="150"
WidthRequest="150"
HorizontalOptions="Center">
<BoxView.Color>
<Color>
<x:Arguments>
<x:Single>0.8</x:Single>
<x:Single>0.5</x:Single>
<x:Single>0.2</x:Single>
<x:Single>0.5</x:Single>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
x:Arguments
タグ内の要素の数とこれらの要素の型は、Color コンストラクターのいずれかと一致する必要があります。 パラメーターが 1 つの Color コンストラクターには、0 (黒) から 1 (白) までのグレースケール float
値が必要です。 3 つのパラメーターがある Color コンストラクターには、0 から 1 までの float
赤、緑、青の値が必要です。 4 つのパラメーターがある Color コンストラクターは、4 番目のパラメーターとして float
アルファ チャネルを追加します。
ファクトリ メソッドを呼び出す
ファクトリ メソッドは、x:FactoryMethod
属性を使用してメソッドの名前を指定し、x:Arguments
属性を使用してその引数を指定することで、.NET MAUI XAML で呼び出すことができます。 ファクトリ メソッドは、定義するクラスまたは構造と同じ型のオブジェクトまたは値を返す public static
メソッドです。
Color クラスでは多くのファクトリ メソッドを定義します。次の例では、そのうちの 3 つを呼び出しています。
<BoxView HeightRequest="150"
WidthRequest="150"
HorizontalOptions="Center">
<BoxView.Color>
<Color x:FactoryMethod="FromRgba">
<x:Arguments>
<x:Byte>192</x:Byte>
<x:Byte>75</x:Byte>
<x:Byte>150</x:Byte>
<x:Byte>128</x:Byte>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
<BoxView HeightRequest="150"
WidthRequest="150"
HorizontalOptions="Center">
<BoxView.Color>
<Color x:FactoryMethod="FromHsla">
<x:Arguments>
<x:Double>0.23</x:Double>
<x:Double>0.42</x:Double>
<x:Double>0.69</x:Double>
<x:Double>0.7</x:Double>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
<BoxView HeightRequest="150"
WidthRequest="150"
HorizontalOptions="Center">
<BoxView.Color>
<Color x:FactoryMethod="FromHex">
<x:Arguments>
<x:String>#FF048B9A</x:String>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
x:Arguments
タグ内の要素の数とこれらの要素の型は、呼び出されるファクトリ メソッドの引数と一致する必要があります。 FromRgba
ファクトリ メソッドでは 4 つの byte
引数が必要で、それぞれ 0 ~ 255 の範囲で赤、緑、青、およびアルファ値を表します。 FromHsla
ファクトリ メソッドでは 4 つの float
引数が必要で、それぞれ 0 ~ 1 の範囲で色調、彩度、光度、およびアルファ値を表します。 FromHex
ファクトリ メソッドでは、16 進数 (A) RGB 色を表す 1 つの string
引数が必要です。
ジェネリック型引数を指定する
次の例に示すように、ジェネリック型のコンストラクターのジェネリック型引数は、x:TypeArguments
属性を使用して指定できます。
<StackLayout>
<StackLayout.Margin>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS" Value="0,20,0,0" />
<On Platform="Android" Value="5, 10" />
</OnPlatform>
</StackLayout.Margin>
</StackLayout>
OnPlatform
クラスはジェネリック クラスであり、対象の型と一致する x:TypeArguments
属性を使用してインスタンス化する必要があります。 On
クラスで、Platform
属性は 1 つのstring
値または複数のコンマ区切りstring
値を受け取ることができます。 この例では、StackLayout.Margin
プロパティはプラットフォーム固有 Thickness
に設定されています。
ジェネリック型引数の詳細については、「 XAML のジェネリック」を参照してください。
.NET MAUI