Share via


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:

Genel Stiller Örneği

Bir sayfanın ResourceDictionaryiç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.TextColorRed bir Style ayarı, olarak ayarlayan GreenButton.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 buttonStyletarafı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:

Stilleri Geçersiz Kılma Örneği

C'de genel stil oluşturma#

Styleörnekleri, aşağıdaki kod örneğinde gösterildiği gibi yeni ResourceDictionarybir 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.