Předání argumentů

Č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 víceplatformních aplikací .NET (.NET MAUI) pomocí x:Arguments atributů x:FactoryMethod :

  • Atribut x:Arguments se 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ředaný konstruktor argumenty.
  • Atribut x:FactoryMethod se používá k určení metody továrny, která se dá 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 továrny pomocí následujících primitiv jazyka .NET MAUI XAML:

  • 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 lze použít k předávání float argumentů.

Předaný argumenty 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.

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 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.

Třída 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 konkrétní Thicknessplatformu .

Další informace oargumentch