Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek ukazuje použití atributů XAML, které lze použít k předávání argumentů jiným než výchozím konstruktorům, k volání metod továrny a k určení typu obecného argumentu.
Přehled
Často je nutné vytvořit instanci objektů pomocí konstruktorů, které vyžadují argumenty, nebo voláním statické metody vytvoření. Toho lze dosáhnout v XAML pomocí x:Arguments x:FactoryMethod atributů:
- Atribut
x:Argumentsse používá k určení argumentů konstruktoru pro jiný než výchozí konstruktor nebo pro deklaraci objektu metody továrny. Další informace naleznete v tématu Předávání argumentů konstruktoru. - Atribut
x:FactoryMethodse používá k určení metody továrny, která se dá použít k inicializaci objektu. Další informace naleznete v tématu Volání metod 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.
Předávání argumentů konstruktoru
Argumenty lze předat nenástavbovém konstruktoru pomocí atributu x:Arguments . Každý argument konstruktoru musí být oddělen v elementu XML, který představuje typ argumentu. Xamarin.Forms podporuje následující prvky pro základní typy:
x:Arrayx:Booleanx:Bytex:Charx:DateTimex:Decimalx:Doublex:Int16x:Int32x:Int64x:Objectx:Singlex:Stringx:TimeSpan
Následující příklad kódu ukazuje použití atributu x:Arguments se třemi Color konstruktory:
<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
<BoxView.Color>
<Color>
<x:Arguments>
<x:Double>0.9</x:Double>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
<BoxView.Color>
<Color>
<x:Arguments>
<x:Double>0.25</x:Double>
<x:Double>0.5</x:Double>
<x:Double>0.75</x:Double>
</x:Arguments>
</Color>
</BoxView.Color>
</BoxView>
<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
<BoxView.Color>
<Color>
<x:Arguments>
<x:Double>0.8</x:Double>
<x:Double>0.5</x:Double>
<x:Double>0.2</x:Double>
<x:Double>0.5</x:Double>
</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ě šedé od 0 (černé) do 1 (bílé). Konstruktor Color se třemi parametry vyžaduje červenou, zelenou a modrou hodnotu v rozsahu od 0 do 1. Konstruktor Color se čtyřmi parametry přidá jako čtvrtý parametr alfa kanál.
Následující snímky obrazovky znázorňují výsledek volání jednotlivých Color konstruktorů se zadanými hodnotami argumentů:

Volání metod továrny
Metody továrny lze volat v XAML zadáním názvu metody pomocí atributu x:FactoryMethod a jejích 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 továrny a následující příklad kódu ukazuje volání tří z nich:
<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
<BoxView.Color>
<Color x:FactoryMethod="FromRgba">
<x:Arguments>
<x:Int32>192</x:Int32>
<x:Int32>75</x:Int32>
<x:Int32>150</x:Int32>
<x:Int32>128</x:Int32>
</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 Int32 parametry, které představují červené, zelené, modré a alfa hodnoty v rozsahu od 0 do 255. Metoda FromHsla továrny vyžaduje čtyři Double parametry, které představují odstín, sytost, světelnost a alfa hodnoty v rozsahu od 0 do 1. Metoda FromHex továrny vyžaduje String , aby představoval šestnáctkovou barvu (A)RGB.
Následující snímky obrazovky ukazují výsledek volání jednotlivých Color metod továrny se zadanými hodnotami argumentů:

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 kódu:
<ContentPage ...>
<StackLayout>
<StackLayout.Margin>
<OnPlatform x:TypeArguments="Thickness">
<On Platform="iOS" Value="0,20,0,0" />
<On Platform="Android" Value="5, 10" />
<On Platform="UWP" Value="10" />
</OnPlatform>
</StackLayout.Margin>
</StackLayout>
</ContentPage>
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 konkrétní Thicknessplatformu .
Další informace oargumentch Xamarin.Forms