Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Стили можно сделать доступными глобально, добавив их в словарь ресурсов приложения. Это помогает избежать дублирования стилей на страницах или элементах управления.
Создание глобального стиля в XAML
По умолчанию все Xamarin.Forms приложения, созданные на основе шаблона, используют класс App для реализации подкласса Application . Чтобы объявить Style приложение на уровне приложения, в приложении ResourceDictionary с помощью XAML класс приложения по умолчанию должен быть заменен классом приложения XAML и связанным кодом. Дополнительные сведения см. в разделе "Работа с классом приложения".
В следующем примере кода показан объявленный Style на уровне приложения:
<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>
Это ResourceDictionary определяет один явный стиль, buttonStyleкоторый будет использоваться для задания внешнего вида Button экземпляров. Однако глобальные стили могут быть явными или неявными.
В следующем примере кода показана страница XAML, применяемая buttonStyle к экземплярам страницы Button :
<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>
Результат показан на следующих снимках экрана:
Сведения о создании стилей на странице ResourceDictionaryсм. в разделе "Явные стили " и "Неявные стили".
Переопределение стилей
Стили ниже в иерархии представлений имеют приоритет над теми, кто определен выше. Например, установка Style заданного значения Button.TextColor Red на уровне приложения будет переопределена стилем уровня страницы, в котором задано значение Button.TextColor Green. Аналогичным образом стиль уровня страницы переопределяется стилем уровня управления. Кроме того, если Button.TextColor задано непосредственно в свойстве элемента управления, это будет иметь приоритет над любыми стилями. Этот приоритет показан в следующем примере кода:
<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>
Исходный buttonStyle, определенный на уровне приложения, переопределяется экземпляром buttonStyle , определенным на уровне страницы. Кроме того, стиль уровня страницы переопределяется уровнем buttonStyleуправления. Таким образом, Button экземпляры отображаются синим текстом, как показано на следующих снимках экрана:
Создание глобального стиля в C#
Style Экземпляры можно добавить в коллекцию приложения Resources в C# путем создания нового ResourceDictionaryэкземпляра, а затем путем добавления Style экземпляров в ResourceDictionaryколлекцию, как показано в следующем примере кода:
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);
...
}
...
}
Конструктор определяет один явный стиль применения к Button экземплярам во всем приложении. Явные Style экземпляры добавляются в ResourceDictionary метод с помощью Add метода, указывая key строку для ссылки на Style экземпляр. Затем Style экземпляр можно применить к любым элементам управления правильного типа в приложении. Однако глобальные стили могут быть явными или неявными.
В следующем примере кода показана страница C#, применяемая buttonStyle к экземплярам страницы Button :
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 применяется к Button экземплярам путем задания их Style свойств и управления внешним видом Button экземпляров.

