Předání argumentů
Často je nutné vytvořit instanci objektů pomocí konstruktorů, které vyžadují argumenty, nebo voláním metody statického vytvoření. Toho lze dosáhnout v xaml .NET Multi-platform App UI (.NET MAUI) pomocí x:Arguments atributů:x:FactoryMethod
- Atribut
x:Argumentsslouží k určení argumentů konstruktoru pro jiný než výchozí konstruktor nebo pro deklaraci objektu objektu továrny. Další informace naleznete v tématu Předávací konstruktor argumenty. - Atribut
x:FactoryMethodslouží k určení metody továrny, kterou lze použít k inicializaci objektu. Další informace naleznete v tématu Metody volání továrny.
Kromě toho x:TypeArguments lze atribut použít k určení argumentů obecného typu konstruktoru obecného typu. Další informace naleznete v tématu Zadání argumentu obecného typu.
Argumenty lze předat konstruktorům a metodám výroby pomocí následujících primitiv jazyka XAML .NET MAUI:
x:Array, který odpovídáArray.x:Boolean, který odpovídáBoolean.x:Byte, který odpovídáByte.x:Char, který odpovídáChar.x:DateTime, který odpovídáDateTime.x:Decimal, který odpovídáDecimal.x:Double, který odpovídáDouble.x:Int16, který odpovídáInt16.x:Int32, který odpovídáInt32.x:Int64, který odpovídáInt64.x:Object, který odpovídá hodnotěObject.x:Single, který odpovídáSingle.x:String, který odpovídáString.x:TimeSpan, který odpovídáTimeSpan.
S výjimkou x:DateTime, ostatní jazykové primitivy jsou ve specifikaci XAML 2009.
Poznámka
Primitivní x:Single jazyk se dá použít k předávání float argumentů.
Argumenty konstruktoru pass
Argumenty lze předat do jiného než výchozího konstruktoru pomocí atributu x:Arguments . Každý argument konstruktoru musí být oddělen v rámci elementu XML, který představuje typ argumentu.
Následující příklad ukazuje použití atributu x:Arguments se třemi různými Color konstruktory:
<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>
Počet prvků v rámci x:Arguments značky a typy těchto prvků musí odpovídat jednomu z Color konstruktorů. Konstruktor Color s jedním parametrem vyžaduje hodnotu stupně float šedé od 0 (černé) do 1 (bílé). Konstruktor Color se třemi parametry vyžaduje float červené, zelené a modré hodnoty v rozsahu od 0 do 1. Konstruktor Color se čtyřmi parametry přidá float alfa kanál jako čtvrtý parametr.
Metody volání továrny
Metody továrny lze volat v .NET MAUI XAML zadáním názvu metody pomocí atributu x:FactoryMethod a jeho argumentů pomocí atributu x:Arguments . Metoda továrny je public static metoda, která vrací objekty nebo hodnoty stejného typu jako třída nebo struktura, která definuje metody.
Struktura Color definuje řadu metod výroby a následující příklad ukazuje volání tří z nich:
<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>
Počet prvků v rámci x:Arguments značky a typy těchto prvků musí odpovídat argumenty volané metody továrny. Metoda FromRgba továrny vyžaduje čtyři byte argumenty, které představují červené, zelené, modré a alfa hodnoty v rozsahu od 0 do 255. Metoda FromHsla továrny vyžaduje čtyři float argumenty, které představují odstín, sytost, světelnost a alfa hodnoty v rozsahu od 0 do 1. Metoda FromHex továrny vyžaduje string argument, který představuje šestnáctkovou barvu (A)RGB.
Zadání argumentu obecného typu
Argumenty obecného typu pro konstruktor obecného typu lze zadat pomocí atributu x:TypeArguments , jak je znázorněno v následujícím příkladu:
<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>
Třída OnPlatform je obecná třída a musí být vytvořena s atributem x:TypeArguments , který odpovídá cílovému typu. On Ve třídě Platform může atribut přijmout jednu string hodnotu nebo více hodnot oddělených string čárkami. V tomto příkladu StackLayout.Margin je vlastnost nastavena na platformu specifické Thickness.
Další informace o argumentech obecného typu najdete v tématu Obecné typy v jazyce XAML.