傳遞引數

通常需要使用需要自變數的建構函式,或藉由呼叫靜態建立方法來具現化物件。 這可以在 .NET 多平臺應用程式 UI (.NET MAUI) XAML 中使用 x:Argumentsx:FactoryMethod 屬性來達成:

  • 屬性 x:Arguments 可用來指定非預設建構函式的建構函式自變數,或指定 Factory 方法物件宣告的建構函式自變數。 如需詳細資訊,請參閱 傳遞建構函式自變數。
  • x:FactoryMethod屬性是用來指定可用來初始化物件的 Factory 方法。 如需詳細資訊,請參閱 呼叫 Factory 方法

此外, x:TypeArguments 屬性可用來將泛型型別自變數指定為泛型型別的建構函式。 如需詳細資訊,請參閱 指定泛型類型自變數

您可以使用下列 .NET MAUI XAML 語言基本類型,將自變數傳遞至建構函式和 Factory 方法:

  • 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 元素內分隔。

下列範例示範搭配三個不同的Color建構函式使用 x:Arguments 屬性:

<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值(白色)。 具有三個參數的floatColor構函式需要紅色、綠色和藍色值,範圍從 0 到 1。 具有四個參數的建 Color 構函式會將Alpha色板新增為第四個 float 參數。

呼叫 Factory 方法

您可以在 .NET MAUI XAML 中呼叫 Factory 方法,方法是使用 x:FactoryMethod 屬性指定方法的名稱,並使用 屬性指定其自變數 x:Arguments 。 Factory 方法是 public static 傳回與定義方法之類別或結構相同類型之物件或值的方法。

類別 Color 會定義許多 Factory 方法,下列範例示範呼叫其中三個方法:

<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 元素數目和這些專案的類型必須符合所呼叫 Factory 方法的自變數。 FromRgba Factory 方法需要四byte個自變數,分別代表紅色、綠色、藍色和 Alpha 值,範圍從 0 到 255。 FromHsla Factory 方法需要四float個自變數,分別代表色調、飽和度、亮度和 Alpha 值,範圍從 0 到 1。 FromHex Factory 方法需要代表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 。 在類別中OnPlatform,屬性可以接受單string一值或多個逗號分隔string值。 在這裡範例中,屬性 StackLayout.Margin 會設定為平臺特定的 Thickness

如需泛型型別自變數的詳細資訊,請參閱 XAML 中的泛型。