傳遞引數

通常需要用需要參數的建構子來實例化物件,或藉由呼叫靜態創建方法來實例化物件。 這可以在 .NET 多平台應用程式介面(.NET MAUI)XAML 中透過使用 x:Argumentsx:FactoryMethod 屬性來實現:

  • 屬性 x:Arguments 用於指定非預設建構子的建構子參數,或工廠方法物件宣告。 欲了解更多資訊,請參閱 Pass 建構子參數。
  • 屬性 x:FactoryMethod 用來指定一個可用來初始化物件的工廠方法。 欲了解更多資訊,請參閱 「呼叫工廠方法」。

此外,屬性 x:TypeArguments 可用來指定通用型別建構子的通用型別參數。 欲了解更多資訊,請參閱 「指定一個通用型別參數」。

參數可透過以下 .NET MAUI XAML 語言原語傳遞給建構子與工廠方法:

  • x:Array,對應於 Array
  • x:Boolean,對應於 Boolean
  • x:Byte,對應於 Byte
  • x:Char,對應於 Char
  • x:DateTime,對應於 DateTime
  • x:Decimal,對應於 Decimal
  • x:Double,對應於 Double
  • x:Int16,對應於 Int16
  • x:Int32,對應於 Int32
  • x:Int64,對應於 Int64
  • x:Object,對應於 Object
  • x:Single,對應於 Single
  • x:String,對應於 String
  • x:TimeSpan,對應於 TimeSpan

除了 x:DateTime之外,其他語言原語皆在 XAML 2009 規範中。

備註

x:Single語言原始碼可用來傳遞float參數。

傳遞建構子參數

參數可以透過屬性 x:Arguments 傳遞給非預設建構子。 每個建構子參數必須以代表參數類型的 XML 元素來界定。

以下範例展示了使用三個不同x:Arguments建構子時使用此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>

標籤內 x:Arguments 元素的數量及其類型必須與其中一個 Color 建構子相符。 Color單一參數的建構子需要從0(黑色)到1(白色)的灰階float值。 擁有三個參數的 Color 建構器需要 float 紅、綠、藍三色值,範圍從0到1。 擁有四個參數的 Color 建構子會將 alpha 通道作為第四個 float 參數。

呼叫工廠方法

工廠方法可以在 .NET MAUI XAML 中透過屬性 x:FactoryMethod 指定方法名稱,以及透過屬性 x:Arguments 指定其參數來呼叫。 工廠方法是一種 public static 方法,該方法會回傳與定義該方法的類別或結構相同類型的物件或值。

Color 類別定義了多種工廠方法,以下範例示範呼叫其中三種:

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

標籤內 x:Arguments 元素的數量及其類型必須與被呼叫的工廠方法的參數相符。 FromRgba工廠方法需要四個byte參數,分別代表紅、綠、藍、alpha 值,範圍從 0 到 255。 FromHsla工廠方法需要四個float參數,分別代表色相、飽和度、亮度和 alpha 值,範圍從 0 到 1。 FromHex 工廠方法需要一個 string 參數來表示十六進位的 (A)RGB 顏色。

指定一個泛型參數

在以下範例中,您可以使用 x:TypeArguments 屬性指定泛型類型建構子的型別參數:

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

OnPlatform 類別為通用類別,必須實例化與 x:TypeArguments 目標類型相符的屬性。 在類別 On 中,屬性 Platform 可以接受單一 string 值,或多個逗號分隔 string 值。 在此範例中,屬性 StackLayout.Margin 設定為平台專用 Thickness

欲了解更多關於泛型參數的資訊,請參見 XAML 中的泛型參數。