Içindeki Genel Stiller Xamarin.Forms
Stiller, uygulamanın kaynak sözlüğüne eklenerek genel olarak kullanılabilir hale getirilebilir. Bu, sayfalar veya denetimler arasında stillerin çoğaltılmasını önlemeye yardımcı olur.
XAML'de genel stil oluşturma
Varsayılan olarak, bir şablondan oluşturulan tüm Xamarin.Forms uygulamalar, alt sınıfı uygulamak için App sınıfını Application
kullanır. Uygulama düzeyinde bir Style
bildirmek için, uygulamanın XAML'yi ResourceDictionary
kullanmasında varsayılan Uygulama sınıfı bir XAML Uygulama sınıfı ve ilişkili arka planda kod ile değiştirilmelidir. Daha fazla bilgi için bkz . Uygulama Sınıfı ile çalışma.
Aşağıdaki kod örneği, uygulama düzeyinde bildirilen bir Style
kodu gösterir:
<Application xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Styles.App">
<Application.Resources>
<ResourceDictionary>
<Style x:Key="buttonStyle" TargetType="Button">
<Setter Property="HorizontalOptions" Value="Center" />
<Setter Property="VerticalOptions" Value="CenterAndExpand" />
<Setter Property="BorderColor" Value="Lime" />
<Setter Property="BorderRadius" Value="5" />
<Setter Property="BorderWidth" Value="5" />
<Setter Property="WidthRequest" Value="200" />
<Setter Property="TextColor" Value="Teal" />
</Style>
</ResourceDictionary>
</Application.Resources>
</Application>
BuResourceDictionary
, buttonStyle
örneklerin görünümünü Button
ayarlamak için kullanılacak tek bir açık stil tanımlar. Ancak genel stiller açık veya örtük olabilir.
Aşağıdaki kod örneği, öğesini sayfanın örneklerine uygulayan buttonStyle
bir XAML sayfasını Button
gösterir:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Styles.ApplicationStylesPage" Title="Application" IconImageSource="xaml.png">
<ContentPage.Content>
<StackLayout Padding="0,20,0,0">
<Button Text="These buttons" Style="{StaticResource buttonStyle}" />
<Button Text="are demonstrating" Style="{StaticResource buttonStyle}" />
<Button Text="application style overrides" Style="{StaticResource buttonStyle}" />
</StackLayout>
</ContentPage.Content>
</ContentPage>
Bu, aşağıdaki ekran görüntülerinde gösterilen görünüme neden olur:
Bir sayfanın ResourceDictionary
içinde stil oluşturma hakkında bilgi için bkz . Açık Stiller ve Örtük Stiller.
Stilleri geçersiz kılma
Görünüm hiyerarşisindeki daha düşük stiller, yukarıda tanımlananlara göre önceliklidir. Örneğin, uygulama düzeyinde olarak ayarlanacak Button.TextColor
Red
bir Style
ayarı, olarak ayarlayan Green
Button.TextColor
bir sayfa düzeyi stili tarafından geçersiz kılınacaktır. Benzer şekilde, bir sayfa düzeyi stili denetim düzeyi stili tarafından geçersiz kılınacaktır. Ayrıca, doğrudan bir denetim özelliğinde ayarlanırsa Button.TextColor
, bu tüm stillerden önceliklidir. Bu öncelik aşağıdaki kod örneğinde gösterilmiştir:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Styles.ApplicationStylesPage" Title="Application" IconImageSource="xaml.png">
<ContentPage.Resources>
<ResourceDictionary>
<Style x:Key="buttonStyle" TargetType="Button">
...
<Setter Property="TextColor" Value="Red" />
</Style>
</ResourceDictionary>
</ContentPage.Resources>
<ContentPage.Content>
<StackLayout Padding="0,20,0,0">
<StackLayout.Resources>
<ResourceDictionary>
<Style x:Key="buttonStyle" TargetType="Button">
...
<Setter Property="TextColor" Value="Blue" />
</Style>
</ResourceDictionary>
</StackLayout.Resources>
<Button Text="These buttons" Style="{StaticResource buttonStyle}" />
<Button Text="are demonstrating" Style="{StaticResource buttonStyle}" />
<Button Text="application style overrides" Style="{StaticResource buttonStyle}" />
</StackLayout>
</ContentPage.Content>
</ContentPage>
Uygulama düzeyinde tanımlanan özgün buttonStyle
, sayfa düzeyinde tanımlanan örnek tarafından buttonStyle
geçersiz kılınmış. Ayrıca, sayfa düzeyi stili denetim düzeyi buttonStyle
tarafından geçersiz kılınmış olur. Bu nedenle, Button
örnekler aşağıdaki ekran görüntülerinde gösterildiği gibi mavi metinle görüntülenir:
C'de genel stil oluşturma#
Style
örnekleri, aşağıdaki kod örneğinde gösterildiği gibi yeni ResourceDictionary
bir oluşturularak ve sonra örnekleri ResourceDictionary
öğesine ekleyerek Style
C# dilinde uygulamanın Resources
koleksiyonuna eklenebilir:
public class App : Application
{
public App ()
{
var buttonStyle = new Style (typeof(Button)) {
Setters = {
...
new Setter { Property = Button.TextColorProperty, Value = Color.Teal }
}
};
Resources = new ResourceDictionary ();
Resources.Add ("buttonStyle", buttonStyle);
...
}
...
}
Oluşturucu, uygulama genelindeki örneklere Button
uygulamak için tek bir açık stil tanımlar. Yöntemi kullanılarak Add
öğesine açıkStyle
örnekler eklenir ResourceDictionary
ve örneğe başvurmak Style
için bir key
dize belirtilir. Daha Style
sonra örnek, uygulamadaki doğru türde herhangi bir denetime uygulanabilir. Ancak genel stiller açık veya örtük olabilir.
Aşağıdaki kod örneği, öğesini sayfanın örneklerine uygulayan buttonStyle
bir C# sayfasını Button
gösterir:
public class ApplicationStylesPageCS : ContentPage
{
public ApplicationStylesPageCS ()
{
...
Content = new StackLayout {
Children = {
new Button { Text = "These buttons", Style = (Style)Application.Current.Resources ["buttonStyle"] },
new Button { Text = "are demonstrating", Style = (Style)Application.Current.Resources ["buttonStyle"] },
new Button { Text = "application styles", Style = (Style)Application.Current.Resources ["buttonStyle"]
}
}
};
}
}
buttonStyle
, özellikleri ayarlanarak Style
örneklere Button
uygulanır ve örneklerin Button
görünümünü denetler.