Passaggio di argomenti
Spesso è necessario creare un'istanza di oggetti con costruttori che richiedono argomenti o chiamando un metodo di creazione statica. A tale scopo, è possibile usare gli attributi e x:FactoryMethod
nell'interfaccia x:Arguments
utente dell'app multipiattaforma .NET (.NET MAUI):
- L'attributo
x:Arguments
viene 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:FactoryMethod
viene utilizzato per specificare un metodo factory che può essere utilizzato per inizializzare un oggetto . Per altre informazioni, vedere Chiamare i metodi factory.
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 all'oggettoObject
.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.
Nota
La primitiva del x:Single
linguaggio 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 in scala float
di grigi 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 factory richiede un string
argomento che rappresenta il colore RGB (A)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 creata un'istanza con un x:TypeArguments
attributo che corrisponde al tipo di destinazione. 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 un oggetto specifico Thickness
della piattaforma.
Per altre informazioni sugli argomenti di tipo generico, vedi Generics in XAML.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per