Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
03.11.13 / ! / 0_Введение в WPF1.doc
Скачиваний:
52
Добавлен:
08.06.2015
Размер:
2.21 Mб
Скачать

Темы и обложки

С точки зрения визуального восприятия тема определяет глобальный внешний вид системы Windows и приложений, которые в ней запускаются. Windows поставляется с несколькими темами. Например, Microsoft Windows XP поставляется с темами Windows XP и Windows Classic, а Windows Vista поставляется с темами Windows Vista и Windows Classic. Внешний вид, определяемый темой, задает внешний вид по умолчанию для приложения WPF. Однако WPF не поддерживает прямую интеграцию с темами Windows. Поскольку внешний вид WPF определяется шаблонами, WPF включает по одному шаблону для каждой известной темы Windows, в том числе Aero (Windows Vista), Classic (Microsoft Windows 2000), Luna (Microsoft Windows XP) и Royale (Microsoft Windows XP Media Center Edition 2005). Эти темы упакованы в словари ресурсов, которые применяются, если ресурсы не найдены в приложении. Внешний вид многих приложений задается с помощью этих тем; сохраняющаяся согласованность с внешним видом Windows помогает пользователям быстрее освоиться с большинством приложений.

С другой стороны, опыт работы пользователя с некоторыми приложениями не обязательно связан с стандартными темами. Например, Проигрыватель Windows Media (Microsoft) работает с аудио- и видеоданными, и здесь преимущество имеют пользователи с опытом работы в другом стиле. Такие Пользовательские интерфейсы чаще предоставляют настраиваемые, специфичные для приложения темы. Такие темы называются "обложки", и приложения, которые их используют, часто предоставляют средства настройки различных аспектов обложек. Проигрыватель Windows Media (Microsoft) имеет множество собственных обложек и обложек от сторонних производителей.

Темы и обложки в WPF наиболее просто задаются с помощью словарей ресурсов. В следующем примере показан процесс задания обложки.

XAML

Копировать

<!-- Blue Skin -->

<ResourceDictionary

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:local="clr-namespace:SDKSample">

<Style TargetType="{x:Type Button}">

<Setter Property="Background" Value="Blue" />

</Style>

...

</ResourceDictionary>

XAML

Копировать

<!-- Yellow Skin -->

<ResourceDictionary

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:local="clr-namespace:SDKSample">

<Style TargetType="{x:Type Button}">

<Setter Property="Background" Value="Yellow" />

</Style>

...

</ResourceDictionary>

Дополнительные сведения см. в разделе "Совместно используемые ресурсы и темы", в подразделе Стилизация и использование шаблонов.

Пользовательские элементы управления

Хотя WPF и обеспечивает поддержку настройки, могут возникнуть ситуации, в которых существующие элементы управления WPF не удовлетворяют требованиям приложения или его пользователей. Это возможно в следующих ситуациях:

  • Нужный Пользовательский интерфейс не может быть создан путем настройки внешнего вида и поведения существующих реализаций WPF.

  • Нужное поведение не поддерживается (или поддерживается частично) существующими реализациями WPF.

Тем не менее, в этом случае можно воспользоваться одной из трех моделей WPF для создания нового элемента управления. Каждая модель предназначена для определенного скрипта и требует, чтобы пользовательский элемент управления был производным от конкретного базового класса WPF. Далее приводится описание этих трех моделей.

  • Модель пользовательского элемента управления. Пользовательский элемент управления производится из UserControl и состоит из одного или нескольких других элементов управления.

  • Модель элемента управления. Пользовательский элемент управления производится из Control и используется для построения реализаций, в которых внешний вид и поведение разделены с помощью шаблонов, подобно большей части элементов управления WPF. Создание элемента управления, производного от Control, предоставляет по сравнению с пользовательскими элементами управления большую свободу для создания нестандартного Пользовательский интерфейс, но может потребовать дополнительных усилий.

  • Модель элемента .NET Framework. Пользовательский элемент управления производится от FrameworkElement, когда его внешний вид определяется пользовательской логикой отрисовки (не шаблонами).

В следующем примере показано создание пользовательского элемента управления "numeric up/down", производного от UserControl.

XAML

Копировать

<UserControl

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

x:Class="SDKSample.NumericUpDown">

<Grid>

<Grid.RowDefinitions>

<RowDefinition/>

<RowDefinition/>

</Grid.RowDefinitions>

<Grid.ColumnDefinitions>

<ColumnDefinition/>

<ColumnDefinition/>

</Grid.ColumnDefinitions>

<!-- Value text box -->

<Border BorderThickness="1" BorderBrush="Gray" Margin="2" Grid.RowSpan="2"

VerticalAlignment="Center" HorizontalAlignment="Stretch">

<TextBlock Name="valueText" Width="60" TextAlignment="Right" Padding="5"/>

</Border>

<!-- Up/Down buttons -->

<RepeatButton Name="upButton" Click="upButton_Click" Grid.Column="1"

Grid.Row="0">Up</RepeatButton>

<RepeatButton Name="downButton" Click="downButton_Click" Grid.Column="1"

Grid.Row="1">Down</RepeatButton>

</Grid>

</UserControl>

VB

Копировать

imports System 'EventArgs

imports System.Windows 'DependencyObject, DependencyPropertyChangedEventArgs,

' FrameworkPropertyMetadata, PropertyChangedCallback,

' RoutedPropertyChangedEventArgs

imports System.Windows.Controls 'UserControl

Namespace SDKSample

' Interaction logic for NumericUpDown.xaml

Partial Public Class NumericUpDown

Inherits System.Windows.Controls.UserControl

'NumericUpDown user control implementation

...

End Class

End Namespace

C#

Копировать

using System; // EventArgs

using System.Windows; // DependencyObject, DependencyPropertyChangedEventArgs,

// FrameworkPropertyMetadata, PropertyChangedCallback,

// RoutedPropertyChangedEventArgs

using System.Windows.Controls; // UserControl

namespace SDKSample

{

public partial class NumericUpDown : UserControl

{

// NumericUpDown user control implementation

...

}

}

В следующем примере показан XAML, необходимый для включения пользовательского элемента управления в окно Window.

XAML

Копировать

<Window

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

x:Class="SDKSample.UserControlWindow"

xmlns:local="clr-namespace:SDKSample"

Title="User Control Window">

...

<!-- Numeric Up/Down user control -->

<local:NumericUpDown />

...

</Window>

На следующем рисунке показан элемент управления NumericUpDown, размещенный в окне Window.

Дополнительные сведения о пользовательских элементах управления см. в разделе Общие сведения о разработке управления.

Советы и рекомендации по WPF

Как любая платформа разработки, WPF может использоваться множеством способов для достижения нужного результата. Для гарантий, что приложения WPF предоставляют требуемое взаимодействие с пользователем и удовлетворяют требованиям аудитории в целом, в данном разделе предлагаются советы и рекомендации по специальным возможностям, глобализации и локализации, а также производительности. Дополнительную информацию см. в следующих разделах:

  • Рекомендации по специальным возможностям

  • Общие сведения о глобализации и локализации WPF

  • Улучшение производительности приложений WPF

  • Безопасность (WPF)

Сводка

WPF ― это исчерпывающая технология презентации для построения разнообразных, визуально привлекательных клиентских приложений. Это введение предоставляет обзор основных возможностей WPF.

Следующим шагом является построение приложений WPF!

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

Рекомендуемые обзоры и примеры

В этом введении упоминаются следующие обзоры и примеры:

Соседние файлы в папке !