Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Шаг 1. Применение стиля в XAML документе

Читайте также:
  1. II. ПРИМЕНЕНИЕ АНАЛИТИЧЕСКОЙ ТЕХНИКИ К ИССЛЕДОВАНИЮ ПСИХИЧЕСКИХ ОБРАЗОВАНИЙ
  2. А также из-за изящества стиля. Ответ 1.
  3. Бланк формализованного наблюдения за определением белка в моче (с применением сульфосалициловой кислоты).
  4. В)в специальном журнале и в документе о приеме на работу
  5. Визуальная атрибутика фирменного стиля
  6. Военные действия с применением ядерного оружия?
  7. Вопрос 5. ПСИХОЛОГИЯ ИНДИВИДУАЛЬНОГО СТИЛЯ УПРАВЛЕНИЯ

Итак, пускай мы хотим задать цвет фона и размер шрифта для кнопки. Самый простой и очевидный способ сделать это – это просто задать все нужные стили прямо в теге кнопки:

<Button Name="button1" Width="150" FontSize="12" Background="AliceBlue"
Content="Click Me!" Margin="3" Click="OnResources" />

Есть еще один способ задать стиль элемента прямо в самом элементе:

<Button Width="150" Content="Click Me!" Margin="3">
<Button.Style>
<Style TargetType="Button">
<Setter Property="Background" Value="Yellow" />
<Setter Property="FontSize" Value="14" />
<Setter Property="FontWeight" Value="Bold" />
</Style>
</Button.Style>
</Button>

Понятно, что использование такого способа задания стиля не является оптимальным. Например, часто нужно применить один и тот же стиль к нескольким элементам управления, в этом случае нам пришлось бы копировать код.

К счастью, стили можно создавать отдельно от самих элементов управления и хранить их в коллекциях ресурсов. Например, вот так:

<Window.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="LemonChiffon" />
<Setter Property="FontSize" Value="18" />
</Style>
</Window.Resources>

Такой стиль станет стилем по умолчанию для кнопок на текущей странице.

<Button Width="200" Content="Uses default style" Margin="3" />

Давайте зададим еще несколько стилей.

<Window.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="LemonChiffon" />
<Setter Property="FontSize" Value="18" />
</Style>
<Style x:Key="ButtonStyle">
<Setter Property="Button.Background" Value="Red" />
<Setter Property="Button.Foreground" Value="White" />
<Setter Property="Button.FontSize" Value="18" />
</Style>

<Style x:Key="FancyButtonStyle">
<Setter Property="Button.FontSize" Value="22" />
<Setter Property="Button.Foreground" Value="White" />
<Setter Property="Button.Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0.0" Color="LightCyan" />
<GradientStop Offset="0.14" Color="Cyan" />
<GradientStop Offset="0.7" Color="DarkCyan" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>

Применим их к нескольким новым кнопкам.

<Button
Width="200"
Content="Uses named style"
Style="{StaticResource ButtonStyle}"
Margin="3" />
<Button
Width="200"
Content="Fancy button style"
Style="{StaticResource FancyButtonStyle}"
Margin="3" />

Еще одной особенностью стилей в WPF является то, что стили могут наследовать свойства других стилей. Вот пример:

<Window.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="LemonChiffon" />
<Setter Property="FontSize" Value="18" />
</Style>
<Style x:Key="ButtonStyle">
<Setter Property="Button.Background" Value="Red" />
<Setter Property="Button.Foreground" Value="White" />
<Setter Property="Button.FontSize" Value="18" />
</Style>
<Style x:Key="FancyButtonStyle">
<Setter Property="Button.FontSize" Value="22" />
<Setter Property="Button.Foreground" Value="White" />
<Setter Property="Button.Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0.0" Color="LightCyan" />
<GradientStop Offset="0.14" Color="Cyan" />
<GradientStop Offset="0.7" Color="DarkCyan" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="AnotherButtonStyle"
BasedOn="{StaticResource FancyButtonStyle}"
TargetType="Button">
<Setter Property="Foreground">
<Setter.Value>
<LinearGradientBrush>
<GradientStop Offset="0.2" Color="White" />
<GradientStop Offset="0.5" Color="LightYellow" />
<GradientStop Offset="0.9" Color="Orange" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>

Стиль AnotherButtonStyle наследует свойства от FancyButtonStyle и переопределяет лишьсвойство ForeGround. Можно убедиться, что цвет фона и размер шрифта идентичен для двух этих стилей.

<Button
Width="200"
Content="Style inheritance"
Style="{StaticResource AnotherButtonStyle}"
Margin="3"/>

 

Так будет выглядеть весь код страницы:

<Window
x:Class="StylesAndResources.MainWindow"
xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation
xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml
Title="MainWindow" Height="240" Width="500">
<Window.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="LemonChiffon" />
<Setter Property="FontSize" Value="18" />
</Style>
<Style x:Key="ButtonStyle">
<Setter Property="Button.Background" Value="Red" />
<Setter Property="Button.Foreground" Value="White" />
<Setter Property="Button.FontSize" Value="18" />
</Style>

<Style x:Key="FancyButtonStyle">
<Setter Property="Button.FontSize" Value="22" />
<Setter Property="Button.Foreground" Value="White" />
<Setter Property="Button.Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0.0" Color="LightCyan" />
<GradientStop Offset="0.14" Color="Cyan" />
<GradientStop Offset="0.7" Color="DarkCyan" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>

<Style x:Key="AnotherButtonStyle"
BasedOn="{StaticResourceFancyButtonStyle}" TargetType="Button">
<Setter Property="Foreground">
<Setter.Value>
<LinearGradientBrush>
<GradientStop Offset="0.2" Color="White" />
<GradientStop Offset="0.5" Color="LightYellow" />
<GradientStop Offset="0.9" Color="Orange" />
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>


</Window.Resources>
<StackPanel>
<Button Name="button1" Width="150" FontSize="12"
Background="AliceBlue"
Content="Click Me!" Margin="3" Click="OnResources" />
<Button Width="150" Content="Click Me!" Margin="3">
<Button.Style>
<Style TargetType="Button">
<Setter Property="Background" Value="Yellow" />
<Setter Property="FontSize" Value="14" />
<Setter Property="FontWeight" Value="Bold" />
</Style>
</Button.Style>
</Button>
<Button Width="200" Content="Uses default style" Margin="3" />
<Button Width="200" Content="Uses named style"
Style="{StaticResourceButtonStyle}" Margin="3" />
<Button Width="200" Content="Fancy button style"
Style="{StaticResourceFancyButtonStyle}" Margin="3" />
<Button Width="200" Content="Style inheritance"
Style="{StaticResourceAnotherButtonStyle}" Margin="3" />

</StackPanel>
</Window>

В результате должно получиться вот такое окошко с шестью кнопками.


Рис. л. р. 2.1. Результат применения стилей.


Дата добавления: 2015-08-13; просмотров: 72 | Нарушение авторских прав


Читайте в этой же книге: Ключевые термины | Задача 2. | Лекция 3. Стили и шаблоны элементов управления WPF. | Создание стиля | Использование стиля | Создание шаблона | Связывание в Шаблонах | Установка шаблонов через стили | Ключевые термины | Задача 3. |
<== предыдущая страница | следующая страница ==>
Задача 6.| Шаг 2. Динамическое применение стилей в коде приложения

mybiblioteka.su - 2015-2024 год. (0.011 сек.)