Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Style umożliwiają dostosowywanie wyglądu elementów wizualnych. Style są definiowane dla określonego typu i zawierają wartości właściwości dostępnych dla tego typu.
Xamarin.Forms aplikacje często zawierają wiele kontrolek, które mają identyczny wygląd. Na przykład aplikacja może mieć wiele Label wystąpień, które mają te same opcje czcionek i opcje układu, jak pokazano w poniższym przykładzie kodu XAML:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Styles.NoStylesPage"
Title="No Styles"
IconImageSource="xaml.png">
<ContentPage.Content>
<StackLayout Padding="0,20,0,0">
<Label Text="These labels"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand"
FontSize="Large" />
<Label Text="are not"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand"
FontSize="Large" />
<Label Text="using styles"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand"
FontSize="Large" />
</StackLayout>
</ContentPage.Content>
</ContentPage>
Poniższy przykład kodu przedstawia równoważną stronę utworzoną w języku C#:
public class NoStylesPageCS : ContentPage
{
public NoStylesPageCS ()
{
Title = "No Styles";
IconImageSource = "csharp.png";
Padding = new Thickness (0, 20, 0, 0);
Content = new StackLayout {
Children = {
new Label {
Text = "These labels",
HorizontalOptions = LayoutOptions.Center,
VerticalOptions = LayoutOptions.CenterAndExpand,
FontSize = Device.GetNamedSize (NamedSize.Large, typeof(Label))
},
new Label {
Text = "are not",
HorizontalOptions = LayoutOptions.Center,
VerticalOptions = LayoutOptions.CenterAndExpand,
FontSize = Device.GetNamedSize (NamedSize.Large, typeof(Label))
},
new Label {
Text = "using styles",
HorizontalOptions = LayoutOptions.Center,
VerticalOptions = LayoutOptions.CenterAndExpand,
FontSize = Device.GetNamedSize (NamedSize.Large, typeof(Label))
}
}
};
}
}
Każde Label wystąpienie ma identyczne wartości właściwości do kontrolowania wyglądu tekstu wyświetlanego Labelprzez element . Spowoduje to wyświetlenie wyglądu pokazanego na poniższych zrzutach ekranu:
Ustawianie wyglądu poszczególnych kontrolek może być powtarzające się i podatne na błędy. Zamiast tego można utworzyć styl definiujący wygląd, a następnie zastosowany do wymaganych kontrolek.
Tworzenie stylu
Klasa Style grupuje kolekcję wartości właściwości w jeden obiekt, który następnie można zastosować do wielu wystąpień elementów wizualnych. Pomaga to zmniejszyć powtarzające się znaczniki i umożliwia łatwiejsze zmianę wyglądu aplikacji.
Mimo że style zostały zaprojektowane głównie dla aplikacji opartych na języku XAML, można je również utworzyć w języku C#:
Stylewystąpienia utworzone w języku XAML są zwykle definiowane w obiekcieResourceDictionaryprzypisanym doResourceskolekcji kontrolki, strony lubResourceskolekcji aplikacji.Stylewystąpienia utworzone w języku C# są zwykle definiowane w klasie strony lub w klasie, do której można uzyskać dostęp globalnie.
Wybieranie miejsca definiowania Style wpływu, w którym można go użyć:
Stylewystąpienia zdefiniowane na poziomie kontrolki można stosować tylko do kontrolki i do jej elementów podrzędnych.Stylewystąpienia zdefiniowane na poziomie strony można stosować tylko do strony i jej elementów podrzędnych.Stylewystąpienia zdefiniowane na poziomie aplikacji można stosować w całej aplikacji.
Każde Style wystąpienie zawiera kolekcję co najmniej jednego Setter obiektu, z których każda Setter ma obiekt Property i Value. Jest Property to nazwa właściwości możliwej do powiązania elementu, do którego jest stosowany styl, a Value wartość jest stosowana do właściwości .
Każde Style wystąpienie może być jawne lub niejawne:
- Jawne wystąpienie jest definiowane przez określenie
TargetTypewartości ix:Keyoraz przez ustawienie właściwości elementuStyledocelowego nax:Keyodwołanie.StyleAby uzyskać więcej informacji na temat jawnych stylów, zobacz Jawne style. - Wystąpienie niejawne
Stylejest definiowane przez określenie tylko .TargetTypeWystąpienieStylezostanie następnie automatycznie zastosowane do wszystkich elementów tego typu. Należy pamiętać, że podklasy obiektuTargetTypenie sąStyleautomatycznie stosowane. Aby uzyskać więcej informacji na temat niejawnych stylów, zobacz Niejawne style.
Podczas tworzenia Styleobiektu właściwość jest zawsze wymagana TargetType . Poniższy przykład kodu przedstawia jawny styl (zwróć uwagę na x:Key) utworzony w języku XAML:
<Style x:Key="labelStyle" TargetType="Label">
<Setter Property="HorizontalOptions" Value="Center" />
<Setter Property="VerticalOptions" Value="CenterAndExpand" />
<Setter Property="FontSize" Value="Large" />
</Style>
Aby zastosować Styleobiekt , obiekt docelowy musi być obiektem VisualElement zgodnym TargetType z wartością Stylewłaściwości , jak pokazano w poniższym przykładzie kodu XAML:
<Label Text="Demonstrating an explicit style" Style="{StaticResource labelStyle}" />
Style niższe w hierarchii widoków mają pierwszeństwo przed zdefiniowanymi wyżej. Na przykład ustawienie wartości ustawianej Style Label.TextColor na Red wartość na poziomie aplikacji zostanie zastąpione przez styl na poziomie strony ustawiony Label.TextColor na Greenwartość . Podobnie styl poziomu strony zostanie zastąpiony stylem poziomu kontrolki. Ponadto jeśli Label.TextColor właściwość kontrolki jest ustawiana bezpośrednio, ma to pierwszeństwo przed dowolnymi stylami.
Artykuły w tej sekcji przedstawiają i wyjaśniają sposób tworzenia i stosowania jawnych i niejawnych stylów, tworzenia stylów globalnych, dziedziczenia stylu, reagowania na zmiany stylu w czasie wykonywania oraz sposobu używania wbudowanych stylów zawartych w programie Xamarin.Forms.
Uwaga
Co to jest identyfikator StyleId?
Xamarin.Forms Przed wersją 2.2 StyleId właściwość była używana do identyfikowania poszczególnych elementów w aplikacji do identyfikacji w testach interfejsu użytkownika oraz w aparatach motywów, takich jak Pixate. Xamarin.Forms Jednak 2.2 wprowadził AutomationId właściwość, która zastępuje StyleId właściwość .
