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 bir bağımsız değişkenin türünü belirtmek için kullanılabilecek XAML özniteliklerinin kullanılması gösterilmektedir.
Genel Bakış
Genellikle bağımsız değişken gerektiren oluşturucularla veya statik bir oluşturma yöntemi çağırarak nesneleri örnekleyerek gereklidir. Bu, ve özniteliklerini kullanarak XAML 'de elde edilebilir x:Argumentsx:FactoryMethod :
x:ArgumentsÖzniteliği, varsayılan olmayan bir oluşturucunun Oluşturucu bağımsız değişkenlerini belirtmek için veya bir Factory yöntemi nesne bildirimi 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, öznitelik genel tür x:TypeArguments bağımsız değişkenlerini genel bir türün oluşturucusuna 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 geçirilebilir x:Arguments . 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ırlanmış olmalıdır. Xamarin.Forms temel türler için aşağıdaki öğeleri destekler:
x:Arrayx:Booleanx:Bytex:Charx:DateTimex:Decimalx:Doublex:Int16x:Int32x:Int64x:Objectx:Singlex:Stringx:TimeSpan
Aşağıdaki kod örneği, x:Arguments üç Oluşturucu ile özniteliğini kullanmayı göstermektedir Color :
<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>
Etiket içindeki öğe sayısı x:Arguments ve bu öğelerin türleri Color oluşturuculardan biriyle eşleşmelidir. ColorColor Tek parametreli Xamarin_Forms _Color__ctor_System_Double_ "Data-LinkType =" Absolute-path ">Oluşturucusu, 0 (siyah) ile 1 (beyaz) arasında gri tonlamalı bir değer gerektirir. ColorColor Üç parametreli Xamarin_Forms _Color__ctor_System_Double_System_Double_System_Double_ "Data-LinkType =" Absolute-path ">Oluşturucusu, 0 ile 1 arasında kırmızı, yeşil ve mavi bir değer gerektirir. ColorXamarin_Forms Color "Data-LinkType =" Absolute-path ">oluşturucu dört parametreli _Color__ctor_System_Double_System_Double_System_Double_System_Double_, dördüncü parametre olarak bir alfa kanalı ekler.
Aşağıdaki ekran görüntüleri, her Color oluşturucuyu belirtilen bağımsız değişken değerleriyle çağırma sonucunu gösterir:

Fabrika yöntemlerini çağırma
Özelliği kullanılarak yöntemin adı x:FactoryMethod ve özniteliği kullanılarak bağımsız değişkenleri belirtilerek, fabrika YÖNTEMLERI xaml 'de çağrılabilir x:Arguments . Factory yöntemi, public static yöntemleri tanımlayan sınıf veya yapı ile aynı türdeki nesneleri veya değerleri döndüren bir yöntemdir.
ColorYapı bir dizi fabrika yöntemini tanımlar ve aşağıdaki kod örneği bunlardan üçünü çağırmayı 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>
Etiket içindeki öğelerin sayısı x:Arguments ve bu öğelerin türleri, çağrılan fabrika yönteminin bağımsız değişkenleriyle eşleşmelidir. Xamarin_Forms _Color_FromRgba_System_Int32_System_Int32_System_Int32_System_Int32_ "Data-LinkType =" Absolute-path ">FromRgba Factory yöntemi, Int32 kırmızı, yeşil, mavi ve Alfa değerlerini temsil eden, sırasıyla 0 ile 255 arasında dört parametre gerektirir. Xamarin_Forms _Color_FromHsla_System_Double_System_Double_System_Double_System_Double_ "Data-LinkType =" Absolute-path ">FromHsla Factory yöntemi, Double ton, doygunluk, parlaklık ve Alfa değerlerini sırasıyla 0 ' dan 1 ' e kadar gösteren dört parametre gerektirir. Xamarin_Forms _Color_FromHex_System_String_ "Data-LinkType =" Absolute-path ">FromHex Factory yöntemi, String onaltılık (a) RGB rengini temsil eden bir gerektirir.
Aşağıdaki ekran görüntüleri, her bir Color fabrika yönteminin belirtilen bağımsız değişken değerleriyle çağrılması sonucunu gösterir:

Genel tür bağımsız değişkeni belirtme
Genel bir türün Oluşturucusu için genel tür bağımsız değişkenleri x:TypeArguments , aşağıdaki kod örneğinde gösterildiği gibi özniteliği kullanılarak 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>
OnPlatformSınıf genel bir sınıftır ve x:TypeArguments hedef türle eşleşen bir öznitelik ile oluşturulmalıdır. OnSınıfında, Xamarin_Forms On _On_Platform "Data-LinkType =" Absolute-path ">Platform özniteliği tek bir string değer veya virgülle ayrılmış birden çok değer kabul edebilir string . Bu örnekte, Xamarin_Forms _View_Margin "Data-LinkType =" Absolute-path ">StackLayout.Margin özelliği platforma özgü olarak ayarlanmıştır Thickness .
Genel tür bağımsız değişkenleri hakkında daha fazla bilgi için bkz Generics in Xamarin.Forms XAML ..
Örneği indirin