Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Spesso è necessario creare un'istanza di oggetti utilizzando i costruttori che necessitano di argomenti oppure chiamando un metodo di creazione statica. Per raggiungere questo obiettivo in .NET Multi-platform App UI (.NET MAUI) XAML, è possibile usare gli attributi x:Arguments e x:FactoryMethod.
- L'attributo
x:Argumentsviene usato per specificare gli argomenti del costruttore per un costruttore non predefinito o per una dichiarazione di oggetto metodo factory. Per altre informazioni, vedere Passare gli argomenti del costruttore. - L'attributo
x:FactoryMethodviene utilizzato per specificare un metodo factory che può essere utilizzato per inizializzare un oggetto . Per ulteriori informazioni, vedere Metodi factory delle chiamate.
Inoltre, l'attributo x:TypeArguments può essere usato per specificare gli argomenti di tipo generico per il costruttore di un tipo generico. Per altre informazioni, vedere Specificare un argomento di tipo generico.
Gli argomenti possono essere passati ai costruttori e ai metodi factory usando le primitive del linguaggio XAML .NET MAUI seguenti:
-
x:Array, che corrisponde aArray. -
x:Boolean, che corrisponde aBoolean. -
x:Byte, che corrisponde aByte. -
x:Char, che corrisponde aChar. -
x:DateTime, che corrisponde aDateTime. -
x:Decimal, che corrisponde aDecimal. -
x:Double, che corrisponde aDouble. -
x:Int16, che corrisponde aInt16. -
x:Int32, che corrisponde aInt32. -
x:Int64, che corrisponde aInt64. -
x:Object, che corrisponde aObject. -
x:Single, che corrisponde aSingle. -
x:String, che corrisponde aString. -
x:TimeSpan, che corrisponde aTimeSpan.
Ad eccezione di x:DateTime, le altre primitive del linguaggio si trovano nella specifica XAML 2009.
Annotazioni
La primitiva linguistica x:Single può essere usata per passare float argomenti.
Passare argomenti del costruttore
Gli argomenti possono essere passati a un costruttore non predefinito usando l'attributo x:Arguments . Ogni argomento del costruttore deve essere delimitato all'interno di un elemento XML che rappresenta il tipo dell'argomento.
L'esempio seguente illustra l'uso dell'attributo x:Arguments con tre costruttori diversi Color :
<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>
Il numero di elementi all'interno del x:Arguments tag e i tipi di questi elementi devono corrispondere a uno dei Color costruttori. Il Color costruttore con un singolo parametro richiede un valore di scala di grigi float compreso tra 0 (nero) e 1 (bianco). Il Color costruttore con tre parametri richiede float valori rosso, verde e blu compresi tra 0 e 1. Il Color costruttore con quattro parametri aggiunge un float canale alfa come quarto parametro.
Chiamare i metodi factory
I metodi factory possono essere chiamati in XAML MAUI .NET specificando il nome del metodo usando l'attributo x:FactoryMethod e i relativi argomenti usando l'attributo x:Arguments . Un metodo factory è un public static metodo che restituisce oggetti o valori dello stesso tipo della classe o della struttura che definisce i metodi.
La Color classe definisce una serie di metodi factory e l'esempio seguente illustra la chiamata di tre metodi:
<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>
Il numero di elementi all'interno del x:Arguments tag e i tipi di questi elementi devono corrispondere agli argomenti del metodo factory chiamato. Il FromRgba metodo factory richiede quattro byte argomenti, che rappresentano rispettivamente i valori rosso, verde, blu e alfa, compresi tra 0 e 255. Il FromHsla metodo factory richiede quattro float argomenti, che rappresentano rispettivamente la tonalità, la saturazione, la luminosità e i valori alfa, compresi tra 0 e 1. Il FromHex metodo di fabbrica richiede un string argomento che rappresenta il colore (A)RGB esadecimale.
Specificare un argomento di tipo generico
È possibile specificare argomenti di tipo generico per il costruttore di un tipo generico usando l'attributo x:TypeArguments , come illustrato nell'esempio seguente:
<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>
La OnPlatform classe è una classe generica e deve essere istanziata con un attributo x:TypeArguments che corrisponde al tipo di riferimento.
On Nella classe l'attributo Platform può accettare un singolo string valore o più valori delimitati da string virgole. In questo esempio, la StackLayout.Margin proprietà è impostata su una Thickness specifica della piattaforma.
Per altre informazioni sugli argomenti di tipo generico, vedi Generics in XAML.