Udostępnij za pośrednictwem


Jawne style w Xamarin.Forms

Jawny styl to styl, który jest selektywnie stosowany do kontrolek przez ustawienie właściwości stylu.

Tworzenie stylu jawnego w języku XAML

Aby zadeklarować element Style na poziomie strony, należy dodać element do strony, ResourceDictionary a następnie w pliku można uwzględnić co najmniej jedną Style deklarację ResourceDictionary. Element jest Style jawny, podając jego deklarację x:Key atrybutu, który daje mu klucz opisowy w obiekcie ResourceDictionary. Style jawne należy następnie stosować do określonych elementów wizualizacji, ustawiając ich Style właściwości.

Poniższy przykład kodu przedstawia jawne style zadeklarowane w języku XAML w kodzie strony ResourceDictionary i zastosowane do wystąpień strony Label :

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Styles.ExplicitStylesPage" Title="Explicit" IconImageSource="xaml.png">
    <ContentPage.Resources>
        <ResourceDictionary>
            <Style x:Key="labelRedStyle" TargetType="Label">
                <Setter Property="HorizontalOptions"
                        Value="Center" />
                <Setter Property="VerticalOptions"
                        Value="CenterAndExpand" />
                <Setter Property="FontSize" Value="Large" />
                <Setter Property="TextColor" Value="Red" />
            </Style>
            <Style x:Key="labelGreenStyle" TargetType="Label">
                ...
                <Setter Property="TextColor" Value="Green" />
            </Style>
            <Style x:Key="labelBlueStyle" TargetType="Label">
                ...
                <Setter Property="TextColor" Value="Blue" />
            </Style>
        </ResourceDictionary>
    </ContentPage.Resources>
    <ContentPage.Content>
        <StackLayout Padding="0,20,0,0">
            <Label Text="These labels"
                   Style="{StaticResource labelRedStyle}" />
            <Label Text="are demonstrating"
                   Style="{StaticResource labelGreenStyle}" />
            <Label Text="explicit styles,"
                   Style="{StaticResource labelBlueStyle}" />
            <Label Text="and an explicit style override"
                   Style="{StaticResource labelBlueStyle}"
                   TextColor="Teal" />
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

Definiuje ResourceDictionary trzy jawne style, które są stosowane do wystąpień strony Label. Każdy Style z nich służy do wyświetlania tekstu w innym kolorze, a także ustawiania rozmiaru czcionki oraz opcji układu poziomego i pionowego. Każda Style z nich jest stosowana do innej Label metody, ustawiając jej Style właściwości przy użyciu StaticResource rozszerzenia znaczników. Spowoduje to wyświetlenie wyglądu pokazanego na poniższych zrzutach ekranu:

Przykład jawnych stylów

Ponadto w finale Label zastosowano Style element , ale także zastępuje TextColor właściwość inną Color wartością.

Tworzenie jawnego stylu na poziomie kontrolki

Oprócz tworzenia jawnych stylów na poziomie strony można je również utworzyć na poziomie kontroli, jak pokazano w poniższym przykładzie kodu:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Styles.ExplicitStylesPage" Title="Explicit" IconImageSource="xaml.png">
    <ContentPage.Content>
        <StackLayout Padding="0,20,0,0">
            <StackLayout.Resources>
                <ResourceDictionary>
                    <Style x:Key="labelRedStyle" TargetType="Label">
                      ...
                    </Style>
                    ...
                </ResourceDictionary>
            </StackLayout.Resources>
            <Label Text="These labels" Style="{StaticResource labelRedStyle}" />
            ...
        </StackLayout>
    </ContentPage.Content>
</ContentPage>

W tym przykładzie Style jawne wystąpienia są przypisywane do Resources kolekcji kontrolkiStackLayout. Style można następnie zastosować do kontrolki i jej elementów podrzędnych.

Aby uzyskać informacje na temat tworzenia stylów w aplikacji ResourceDictionary, zobacz Style globalne.

Tworzenie jawnego stylu w języku C#

Style wystąpienia można dodać do kolekcji strony Resources w języku C#, tworząc nowy ResourceDictionaryelement , a następnie dodając Style wystąpienia do ResourceDictionaryobiektu , jak pokazano w poniższym przykładzie kodu:

public class ExplicitStylesPageCS : ContentPage
{
    public ExplicitStylesPageCS ()
    {
        var labelRedStyle = new Style (typeof(Label)) {
            Setters = {
                ...
                new Setter { Property = Label.TextColorProperty, Value = Color.Red    }
            }
        };
        var labelGreenStyle = new Style (typeof(Label)) {
            Setters = {
                ...
                new Setter { Property = Label.TextColorProperty, Value = Color.Green }
            }
        };
        var labelBlueStyle = new Style (typeof(Label)) {
            Setters = {
                ...
                new Setter { Property = Label.TextColorProperty, Value = Color.Blue }
            }
        };

        Resources = new ResourceDictionary ();
        Resources.Add ("labelRedStyle", labelRedStyle);
        Resources.Add ("labelGreenStyle", labelGreenStyle);
        Resources.Add ("labelBlueStyle", labelBlueStyle);
        ...

        Content = new StackLayout {
            Children = {
                new Label { Text = "These labels",
                            Style = (Style)Resources ["labelRedStyle"] },
                new Label { Text = "are demonstrating",
                            Style = (Style)Resources ["labelGreenStyle"] },
                new Label { Text = "explicit styles,",
                            Style = (Style)Resources ["labelBlueStyle"] },
                new Label {    Text = "and an explicit style override",
                            Style = (Style)Resources ["labelBlueStyle"], TextColor = Color.Teal }
            }
        };
    }
}

Konstruktor definiuje trzy jawne style, które są stosowane do wystąpień strony Label . Każdy jawnyStyle jest dodawany do ResourceDictionary metody przy użyciu Add metody , określając key ciąg, który ma odwoływać się do Style wystąpienia. Każda z nich Style jest stosowana do innej Label , ustawiając ich Style właściwości.

Nie ma jednak żadnej korzyści z używania elementu ResourceDictionary tutaj. Style Zamiast tego wystąpienia można przypisać bezpośrednio do Style właściwości wymaganych elementów wizualizacji i ResourceDictionary można je usunąć, jak pokazano w poniższym przykładzie kodu:

public class ExplicitStylesPageCS : ContentPage
{
    public ExplicitStylesPageCS ()
    {
        var labelRedStyle = new Style (typeof(Label)) {
            ...
        };
        var labelGreenStyle = new Style (typeof(Label)) {
            ...
        };
        var labelBlueStyle = new Style (typeof(Label)) {
            ...
        };
        ...
        Content = new StackLayout {
            Children = {
                new Label { Text = "These labels", Style = labelRedStyle },
                new Label { Text = "are demonstrating", Style = labelGreenStyle },
                new Label { Text = "explicit styles,", Style = labelBlueStyle },
                new Label { Text = "and an explicit style override", Style = labelBlueStyle,
                            TextColor = Color.Teal }
            }
        };
    }
}

Konstruktor definiuje trzy jawne style, które są stosowane do wystąpień strony Label . Każdy Style z nich służy do wyświetlania tekstu w innym kolorze, a także ustawiania rozmiaru czcionki oraz opcji układu poziomego i pionowego. Każda z nich Style jest stosowana do innej Label , ustawiając jej Style właściwości. Ponadto w finale Label zastosowano Style element , ale także zastępuje TextColor właściwość inną Color wartością.