Aracılığıyla paylaş


XAML'de Bağımsız Değişkenleri Geçirme

Bu makalede, bağımsız değişkenleri varsayılan olmayan oluşturuculara geçirmek, fabrika yöntemlerini çağırmak ve genel bağımsız değişkenin türünü belirtmek için XAML özniteliklerinin kullanılması gösterilmektedir.

Genel bakış

Genellikle bağımsız değişken gerektiren oluşturucularla veya statik oluşturma yöntemini çağırarak nesneleri örneklemek gerekir. Bu, ve x:FactoryMethod öznitelikleri kullanılarak XAML'de x:Arguments elde edilebilir:

  • x:Arguments özniteliği, varsayılan olmayan bir oluşturucu veya fabrika yöntemi nesne bildirimi için oluşturucu bağımsız değişkenlerini belirtmek için kullanılır. Daha fazla bilgi için bkz . Oluşturucu Bağımsız Değişkenlerini Geçirme.
  • x:FactoryMethod özniteliği, bir nesneyi başlatmak için kullanılabilecek bir fabrika yöntemi belirtmek için kullanılır. Daha fazla bilgi için bkz . Fabrika Yöntemlerini Çağırma.

Ayrıca, özniteliği genel x:TypeArguments tür oluşturucusunun genel tür bağımsız değişkenlerini belirtmek için kullanılabilir. Daha fazla bilgi için bkz . Genel Tür Bağımsız Değişkeni Belirtme.

Oluşturucu Bağımsız Değişkenlerini Geçirme

Bağımsız değişkenler, özniteliği kullanılarak varsayılan olmayan bir oluşturucuya x:Arguments geçirilebilir. Her oluşturucu bağımsız değişkeni, bağımsız değişkenin türünü temsil eden bir XML öğesi içinde sınırlandırılmalıdır. Xamarin.Forms temel türler için aşağıdaki öğeleri destekler:

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

Aşağıdaki kod örneği özniteliğini x:Arguments üç Color oluşturucuyla kullanmayı gösterir:

<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
  <BoxView.Color>
    <Color>
      <x:Arguments>
        <x:Double>0.9</x:Double>
      </x:Arguments>
    </Color>
  </BoxView.Color>
</BoxView>
<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
  <BoxView.Color>
    <Color>
      <x:Arguments>
        <x:Double>0.25</x:Double>
        <x:Double>0.5</x:Double>
        <x:Double>0.75</x:Double>
      </x:Arguments>
    </Color>
  </BoxView.Color>
</BoxView>
<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
  <BoxView.Color>
    <Color>
      <x:Arguments>
        <x:Double>0.8</x:Double>
        <x:Double>0.5</x:Double>
        <x:Double>0.2</x:Double>
        <x:Double>0.5</x:Double>
      </x:Arguments>
    </Color>
  </BoxView.Color>
</BoxView>

Etiketindeki x:Arguments öğelerin sayısı ve bu öğelerin türleri oluşturuculardan Color biriyle eşleşmelidir. Tek Colorparametreli oluşturucu , 0 (siyah) ile 1 (beyaz) arasında gri tonlama değeri gerektirir. Üç Colorparametreli oluşturucu , 0 ile 1 arasında bir kırmızı, yeşil ve mavi değer gerektirir. ColorDört parametreli oluşturucu, dördüncü parametre olarak bir alfa kanalı ekler.

Aşağıdaki ekran görüntüleri, her oluşturucuyu belirtilen bağımsız değişken değerleriyle çağırmanın Color sonucunu gösterir:

x:Arguments ile belirtilen BoxView.Color

Fabrika Yöntemlerini Çağırma

Fabrika yöntemleri, özniteliğini kullanarak yöntemin adını ve özniteliğini kullanarak x:FactoryMethod bağımsız değişkenlerini belirterek XAML'de x:Arguments çağrılabilir. Fabrika yöntemi, yöntemleri tanımlayan sınıf veya yapıyla aynı türdeki nesneleri veya değerleri döndüren bir public static yöntemdir.

Yapısı Color bir dizi fabrika yöntemini tanımlar ve aşağıdaki kod örneği bunlardan üçünün çağrılmasını gösterir:

<BoxView HeightRequest="150" WidthRequest="150" HorizontalOptions="Center">
  <BoxView.Color>
    <Color x:FactoryMethod="FromRgba">
      <x:Arguments>
        <x:Int32>192</x:Int32>
        <x:Int32>75</x:Int32>
        <x:Int32>150</x:Int32>                        
        <x:Int32>128</x:Int32>
      </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>

Etiketindeki x:Arguments öğelerin sayısı ve bu öğelerin türleri, çağrılan fabrika yönteminin bağımsız değişkenleriyle eşleşmelidir. FromRgba Fabrika yöntemi, sırasıyla 0 ile 255 arasında değişen kırmızı, yeşil, mavi ve alfa değerlerini temsil eden dört Int32 parametre gerektirir. FromHsla Fabrika yöntemi, sırasıyla 0 ile 1 arasında ton, doygunluk, parlaklık ve alfa değerlerini temsil eden dört Double parametre gerektirir. Fabrika FromHex yöntemi, onaltılık (A)RGB rengini temsil eden bir String gerektirir.

Aşağıdaki ekran görüntüleri, belirtilen bağımsız değişken değerleriyle her Color fabrika yöntemini çağırmanın sonucunu gösterir:

x:FactoryMethod ve x:Arguments ile belirtilen BoxView.Color

Genel Tür Bağımsız Değişkeni Belirtme

Bir genel türün oluşturucusunun genel tür bağımsız değişkenleri, aşağıdaki kod örneğinde gösterildiği gibi özniteliği kullanılarak x:TypeArguments belirtilebilir:

<ContentPage ...>
  <StackLayout>
    <StackLayout.Margin>
      <OnPlatform x:TypeArguments="Thickness">
        <On Platform="iOS" Value="0,20,0,0" />
        <On Platform="Android" Value="5, 10" />
        <On Platform="UWP" Value="10" />
      </OnPlatform>
    </StackLayout.Margin>
  </StackLayout>
</ContentPage>

OnPlatform sınıfı genel bir sınıftır ve hedef türle eşleşen bir x:TypeArguments öznitelikle örneklenmelidir. On sınıfında özniteliği tek Platformstring bir değeri veya birden çok virgülle ayrılmış string değeri kabul edebilir. Bu örnekte özelliği platforma StackLayout.Margin özgü Thicknessolarak ayarlanmıştır.

Genel tür bağımsız değişkenleri hakkında daha fazla bilgi için bkz. XAML'deXamarin.Forms genel değişkenler.