Темы лекции: WPF.
Практическое задание: WPF.
Тренер: Игорь Шкулипа, к.т.н.
Платформа .Net и язык программирования C#.
Занятие 10
http://www.slideshare.net/IgorShkulipa 2
WPF
Windows Presentation Foundation (WPF) ― это система следующего
поколения для построения клиентских приложений Windows с
визуально привлекательными возможностями взаимодействия с
пользователем. С помощью WPF можно создавать широкий спектр как
автономных, так и размещенных в браузере приложений.
В основе WPF лежит векторная система рисовки, не зависящая от
разрешения и созданная с расчетом на возможности современного
графического оборудования. WPF расширяет базовую систему полным
набором функций разработки приложений.
Язык XAML (Extensible Application Markup Language) создан для
управления элементами управления, привязкой данных, макетом,
двухмерной и трехмерной графикой, анимацией, стилями, шаблонами,
документами, мультимедиа, текстом и оформлением.
WPF входит в состав Microsoft .NET Framework и позволяет создавать
приложения, включающие другие элементы библиотеки классов .NET
Framework.
http://www.slideshare.net/IgorShkulipa 3
Общие сведения о WPF
WPF существует в качестве подмножества типов .NET Framework, которые
занимают большую часть в пространстве имен System.Windows.
Для поддержки некоторых более мощных возможностей WPF и для
упрощения процесса программирования WPF включает
дополнительные программные конструкции, которые расширяют
свойства и события: свойства зависимостей и перенаправленные
события.
http://www.slideshare.net/IgorShkulipa 4
Разметка
XAML ― это основанный на XML язык разметки, который используется для
декларативной реализации внешнего вида приложения. Обычно он
используется для создания окон, диалоговых окон, страниц и
пользовательских элементов управления, а также для их заполнения
элементами управления, фигурами и графикой.
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="170.27" Width="266.441">
<Grid HorizontalAlignment="Left" Height="131" VerticalAlignment="Top"
Width="254" Margin="0,0,0,-6">
<TextBox HorizontalAlignment="Left" Height="40" TextWrapping="Wrap"
Text="TextBox" VerticalAlignment="Top" Width="258"/>
<Button Content="Button" HorizontalAlignment="Left"
Margin="10,45,0,0" VerticalAlignment="Top" Width="234"
RenderTransformOrigin="0.178,0.499" Height="76"/>
</Grid>
</Window>
http://www.slideshare.net/IgorShkulipa 5
Язык XAML
XAML — это декларативный язык разметки. С точки зрения модели
программирования .NET Framework язык XAML упрощает создание
пользовательского интерфейса для приложения .NET Framework. Можно создать
видимые элементы пользовательского интерфейса в декларативной разметке
XAML, а затем отделить определение пользовательского интерфейса от логики
времени выполнения, используя файлы кода программной части,
присоединенные к разметке с помощью определений разделяемых классов. Язык
XAML напрямую представляет создание экземпляров объектов в конкретном
наборе резервных типов, определенных в сборках. В этом заключается его
отличие от большинства других языков разметки, которые, как правило,
представляют собой интерпретируемые языки без прямой связи с системой
резервных типов.
Язык XAML обеспечивает рабочий процесс, позволяющий нескольким участникам
разрабатывать пользовательский интерфейс и логику приложения, используя
потенциально различные средства.
При представлении в виде текста файлы XAML являются XML-файлами, которые
обычно имеют расширение .xaml. Файлы можно сохранять в любой кодировке,
поддерживаемой XML, но обычно используется кодировка UTF-8.
<StackPanel>
<Button Content="Click Me"/>
</StackPanel>
http://www.slideshare.net/IgorShkulipa 6
XAML
Синтаксис языка XAML основан преимущественно на XML. Согласно
определению, допустимый код XAML должен быть допустимым кодом
XML. Однако некоторые синтаксические принципы XAML имеют другое,
более сложное значение, будучи допустимыми в XML через
спецификацию XML 1.0. Например, XAML поддерживает синтаксис
свойства элемента, при котором значения свойства могут быть
установлены через элементы, а не через строковые значения
атрибутов или содержимого. Для XML этот синтаксис свойства
элемента просто был бы сочтен элементом, в имени которого есть
точка.
Visual Studio помогает соблюдать правила синтаксиса XAML как в
текстовом редакторе языка XAML, так и в рабочей области
конструирования XAML.
http://www.slideshare.net/IgorShkulipa 7
Пространства имен XAML
С помощью пространств имен в программной инфраструктуре можно отделить
идентификаторы, объявленные пользователем, от идентификаторов, объявленных
самой инфраструктурой, устранить неоднозначность идентификаторов, используя
префиксы пространства имен, и т. д. В языке XAML эту функцию выполняет
собственная концепция пространства имен XAML. Вот как в языке XAML применяется и
развивается концепция пространств имен XML.
• Для объявления пространств имен используется зарезервированный атрибут
пространства имен по умолчанию xmlns, и значением этого атрибута является
универсальный код ресурса (URI).
• Пространства имен не по умолчанию объявляются в XAML с назначением им
префиксов; использование префиксов в элементах и атрибутах рассматривается
как техника ссылки на соответствующее пространство имен.
• Если атрибут "xmlns" не указан, в языке XAML применяется концепция
пространства имен по умолчанию. Пространство имен по умолчанию может не
являться пространством имен по умолчанию на языке XML и может быть
определено различными способами для каждой программной архитектуры XAML.
• Определения пространств имен в XML-документе наследуются от родительского
элемента к дочернему.
• Атрибуты элемента наследуют пространства имен элемента, поэтому префиксы в
атрибутах обычно не используются.
В корневом элементе XAML-файла всегда объявляется пространство имен XAML по
умолчанию. Пространство имен XAML по умолчанию определяет, какие элементы могут
быть объявлены без указания уточняющего префикса.
http://www.slideshare.net/IgorShkulipa 8
Собственное пространство имен языка XAML
Среди пространств имен XAML можно выделить одно, которое объявляется почти в
каждом файле XAML среды выполнения Windows, — это пространство имен для
элементов, которые определены в языке XAML. По соглашению собственное
пространство имен языка XAML сопоставляется с префиксом "x".
Префикс "x" (собственное пространство имен языка XAML) содержит несколько
программных конструкций, которые часто используются в XAML-коде.
x:Key
Задает определяемый пользователем уникальный ключ для каждого ресурса в
ResourceDictionary. Строка токена ключа является аргументом расширения
разметки StaticResource, с помощью которого можно получить любой такой
ресурс из другого использования XAML.
x:Class
Определяет пространство имен и имя класса для кода, предоставляющего XAML-
страницу с выделенным кодом. Эта конструкция называет класс, созданный или
присоединенный при выполнении построения и поддерживающий компилятор
разметки XAML при компиляции приложения. Необходимо иметь такой класс для
поддержки выделенного кода или же инициализировать XAML-содержимое как
Window.Content в стандартной модели активации приложения.
x:Name
Задает имя экземпляра объекта времени выполнения, созданного в исполняемом
коде по итогам обработки элемента, который определяет этот объект в XAML-
коде. Можно использовать x:Name для идентификации элемента, что может быть
полезно в случае, если FrameworkElement.Name не поддерживается этим типом
элемента. Включение x:Name в код XAML можно рассматривать как объявление
именованных переменных в коде, и, как будет описано дальше, это именно то,
что происходит при загрузке XAML в качестве компонента приложения среды
выполнения Windows.
Директива x:Uid
Определяет элементы, которые должны использовать локализованные ресурсы
для некоторых значений их свойств.
http://www.slideshare.net/IgorShkulipa 9
Расширения разметки
Расширения разметки — это структура языка XAML, которую часто использует реализация
XAML в среде выполнения Windows. В синтаксисе атрибутов XAML фигурные скобки "{" и
"}" обозначают использование расширения разметки XAML. Они предписывают
синтаксическому анализатору XAML отклониться от общей процедуры обработки
значений атрибутов как строковых литералов или значений, напрямую преобразуемых в
строки. Вместо этого средство синтаксического анализа языка XAML вызывает код, на
который опирается данное расширение разметки, и предоставляет альтернативный
результат в виде объекта или поведения. Расширения разметки могут иметь аргументы,
содержащиеся также внутри фигурных скобок.
Реализация XAML в среде выполнения Windows использует следующие расширения
разметки, которые определены в пространстве имен XAML по умолчанию и распознаются
синтаксическим анализатором XAML среды выполнения Windows:
• Binding: поддерживает привязку данных, которая откладывает значение свойства,
пока оно не будет истолковано в соответствии с контекстом данных, существующим
только во время выполнения. Расширение разметки поддерживает широкий
диапазон аргументов. Подробнее см. в разделе Привязка расширения разметки.
• StaticResource: поддерживает ссылку на значения ресурсов, определенные в
ResourceDictionary, которые могут находиться в другом XAML-файле, но которые, в
конечном счете, средство синтаксического анализа должно находить во время
загрузки. Аргумент использования {StaticResource} должен определять ключ для
ресурса с ключом в ResourceDictionary.
• TemplateBinding: особый случай Binding, который поддерживает шаблоны
элемента управления в XAML и их возможное использование во время выполнения.
• RelativeSource: делает возможной определенную форму привязки шаблонов.
http://www.slideshare.net/IgorShkulipa 10
События
XAML — декларативный язык для объявления объектов и их свойств, но
он также содержит синтаксические средства для назначения
обработчиков событий объектам в разметке.
Синтаксис событий XAML позволяет затем интегрировать объявленные в
XAML-коде события через модель программирования приложений
среды выполнения Windows. Имя события задается как имя атрибута
объекта, в котором обрабатывается событие.
В качестве значения атрибута указывается имя функции обработчика
событий, которая определяется в коде.
Обработчик XAML использует это имя для создания представления
делегирования в загруженном дереве объектов и добавляет указанный
обработчик во внутренний список обработчиков.
http://www.slideshare.net/IgorShkulipa 11
Перенаправленные события
Перенаправленное событие — это тип события, который может вызывать
обработчики для нескольких прослушивателей в элементе дерева, а не
только для объекта, вызвавшего событие.
Перенаправленное событие — это событие CLR, которое резервируется
экземпляром класса RoutedEvent и обрабатывается в системе событий
Windows Presentation Foundation (WPF).
Обычно в приложении WPF содержится много элементов. В зависимости
от того, созданы элементы в коде или объявлены в XAML, они связаны
в дереве элементов друг с другом. Маршрут события может проходить
в одном из двух направлений в зависимости от определения события,
но обычно маршрут проходит от исходного элемента и затем
"всплывает" вверх по дереву элементов до тех пор, пока не достигнет
корневого элемента дерева (как правило, страница или окно).
http://www.slideshare.net/IgorShkulipa 12
Пример разметки
http://www.slideshare.net/IgorShkulipa 13
Код основного окна
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace WpfApplication1
{
/// <summary>
/// Логика взаимодействия для MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
textBox1.Text = "Hello, World WPF!";
}
}
}
http://www.slideshare.net/IgorShkulipa 14
Связывание данных
Простейший способ привязки данных подразумевает ситуацию, когда
исходным объектом является элемент WPF, а исходным свойством —
свойство зависимости.
Свойство зависимости имеет встроенную поддержку уведомлений об
изменениях. В результате, когда значение свойства зависимости
изменяется в исходном объекте, привязанное свойство целевого
объекта немедленно обновляется.
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="278.003">
<Grid HorizontalAlignment="Left" Height="321" VerticalAlignment="Top" Width="268"
Margin="0,0,0,-1">
<Slider x:Name="fontResizer" HorizontalAlignment="Left" Margin="26,32,0,0"
VerticalAlignment="Top" Width="214" Maximum="72" Minimum="10" TickFrequency="5"
SmallChange="1" TickPlacement="Both"/>
<TextBlock x:Name="textBlock"
HorizontalAlignment="Left" Margin="26,86,0,0"
TextWrapping="Wrap" Text="Some Text"
VerticalAlignment="Top" Width="214«
FontSize="{Binding ElementName=fontResizer, Path=Value}"/>
</Grid>
</Window>
http://www.slideshare.net/IgorShkulipa 15
Результат
http://www.slideshare.net/IgorShkulipa 16
Стили
Стилем называется коллекция значений свойств, которые могут
применяться к элементу. Система стилей WPF играет ту же роль,
которую играет стандарт каскадных таблиц стилей (Cascading Style
Sheet — CSS) в HTML-разметке. Подобно CSS, стили WPF позволяют
определять общий набор характеристик форматирования и применять
его повсюду в приложении для обеспечения согласованного вида.
<Window.Resources>
<FontFamily х:Key="ButtonFontFamily">Times New Roman</FontFamily>
<sys:Double x:Key="ButtonFontSize">18</s:Double>
<FontWeight x:Key="ButtonFontWeight">Bold</FontWeight>
</Window.Resources>
В этом фрагменте кода разметки в окно добавляются три ресурса: объект
FontFamily с именем шрифта, который должен использоваться, объект
Double с числом 18 и перечислимое значение FontWeight.Bold. Здесь
предполагается, что .NET-пространство имен System было отображено
на префикс sys пространства имен XML.
Далее можно использовать эти ресурсы для установки внешнего вида
элементов.
http://www.slideshare.net/IgorShkulipa 17
Пример определения стилей
Описание стиля:
<Window.Resources>
<Style x:Key="MyButtonStyle">
<Setter Property="Control.FontFamily" Value="Calibri"></Setter>
<Setter Property="Control.FontSize" Value="18"></Setter>
<Setter Property="Control.FontWeight" Value="Bold"></Setter>
<Setter Property="Control.Padding" Value="5"></Setter>
<Setter Property="Control.Margin" Value="5"></Setter>
</Style>
</Window.Resources>
Применение стиля
<Button Content="Button" Style="{StaticResource MyButtonStyle}" />
http://www.slideshare.net/IgorShkulipa 18
Пример
http://www.slideshare.net/IgorShkulipa 19
Лабораторная работа №10. WPF
Создать приложение для синхронизации файлов в разных директориях
(например, директория на жестком диске и на флеш-накопителе).
Реализовать функции (с одной и другой стороны):
• Файл изменен
• Файл удален
• Файл создан
Интерфейс приложения создать на основе WPF.
Реализовать ведение логов в виде XML. Проводить анализ необходимости
синхронизации, учитывая предыдущие изменения, записанные в XML-
логе.

More Related Content

PPT
Базы данных лекция №12
PDF
Анонимные записи в Haskell. Никита Волков
PDF
Лекция #3. Введение в языки разметки web-страниц
PPTX
PPTX
PPT
[JAM 1.1] Symfony (Alexei Yanochkin)
Базы данных лекция №12
Анонимные записи в Haskell. Никита Волков
Лекция #3. Введение в языки разметки web-страниц
[JAM 1.1] Symfony (Alexei Yanochkin)

Viewers also liked (20)

PPTX
Advanced LinkedIn Techniques
PDF
C++ Базовый. Занятие 13.
PDF
Print Brochure 3NM v6
PDF
AdminMgr&IntDesCV_3.30.15
PPTX
Production diary 11
PDF
C# Web. Занятие 13.
PDF
C# Web. Занятие 01.
PPTX
Apokries2015
PDF
Emergency Assistance
PPTX
Energías limpias
PPTX
Nowhere But Niigata
PPTX
Vijay Bhosekar_ PP_Rodale Institute_Feb 9
PDF
Truly Verona
PPTX
Production diary 10
PPTX
Production diary 4
PPTX
Vijay Bhosekar_ PP_Rodale Institute_Feb 9
PDF
10 Reasons to Trademark Your Business
PPTX
Production diary 17
PDF
C++ Базовый. Занятие 05.
Advanced LinkedIn Techniques
C++ Базовый. Занятие 13.
Print Brochure 3NM v6
AdminMgr&IntDesCV_3.30.15
Production diary 11
C# Web. Занятие 13.
C# Web. Занятие 01.
Apokries2015
Emergency Assistance
Energías limpias
Nowhere But Niigata
Vijay Bhosekar_ PP_Rodale Institute_Feb 9
Truly Verona
Production diary 10
Production diary 4
Vijay Bhosekar_ PP_Rodale Institute_Feb 9
10 Reasons to Trademark Your Business
Production diary 17
C++ Базовый. Занятие 05.
Ad

Similar to C# Desktop. Занятие 10. (20)

PPTX
XAML - язык разметки приложений
PDF
C# Desktop. Занятие 09.
PPT
JavaScript
PPTX
Html лаб 2
PPT
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXB
PPTX
Мировые информационные ресурсы. Лекция 5
PPTX
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
KEY
Flex 4 gumbo framework
PPT
Использование Symfony
PPT
массивы Php
PPTX
HTML
PPTX
PPT
10 компонентные и офисные приложения на платформе microsoft
PPT
Диаграмма компонентов
PDF
Архитектура ROS
PPTX
Custom Language Plugin for JetBrains IDEA
PPT
XML Native Database на примере SednaXML
PPT
Основы HTML
PPTX
TypeScript
XAML - язык разметки приложений
C# Desktop. Занятие 09.
JavaScript
Html лаб 2
Технология создания веб-сервисов на базе стандарта JAX-WS & JAXB
Мировые информационные ресурсы. Лекция 5
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
Flex 4 gumbo framework
Использование Symfony
массивы Php
HTML
10 компонентные и офисные приложения на платформе microsoft
Диаграмма компонентов
Архитектура ROS
Custom Language Plugin for JetBrains IDEA
XML Native Database на примере SednaXML
Основы HTML
TypeScript
Ad

More from Igor Shkulipa (20)

PDF
Общие темы. Тема 03.
PDF
Общие темы. Тема 02.
PDF
Общие темы. Тема 01.
PDF
JavaScript Базовый. Занятие 06.
PDF
JavaScript Базовый. Занятие 11.
PDF
JavaScript Базовый. Занятие 09.
PDF
JavaScript Базовый. Занятие 10.
PDF
JavaScript Базовый. Занятие 05.
PDF
JavaScript Базовый. Занятие 08.
PDF
JavaScript Базовый. Занятие 07.
PDF
JavaScript Базовый. Занятие 01.
PDF
JavaScript Базовый. Занятие 04.
PDF
JavaScript Базовый. Занятие 03.
PDF
JavaScript Базовый. Занятие 02.
PDF
C# Web. Занятие 09.
PDF
C# Web. Занятие 08.
PDF
C# Web. Занятие 07.
PDF
C# Web. Занятие 04.
PDF
C# Web. Занятие 12.
PDF
C# Web. Занятие 16.
Общие темы. Тема 03.
Общие темы. Тема 02.
Общие темы. Тема 01.
JavaScript Базовый. Занятие 06.
JavaScript Базовый. Занятие 11.
JavaScript Базовый. Занятие 09.
JavaScript Базовый. Занятие 10.
JavaScript Базовый. Занятие 05.
JavaScript Базовый. Занятие 08.
JavaScript Базовый. Занятие 07.
JavaScript Базовый. Занятие 01.
JavaScript Базовый. Занятие 04.
JavaScript Базовый. Занятие 03.
JavaScript Базовый. Занятие 02.
C# Web. Занятие 09.
C# Web. Занятие 08.
C# Web. Занятие 07.
C# Web. Занятие 04.
C# Web. Занятие 12.
C# Web. Занятие 16.

C# Desktop. Занятие 10.

  • 1. Темы лекции: WPF. Практическое задание: WPF. Тренер: Игорь Шкулипа, к.т.н. Платформа .Net и язык программирования C#. Занятие 10
  • 2. http://www.slideshare.net/IgorShkulipa 2 WPF Windows Presentation Foundation (WPF) ― это система следующего поколения для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем. С помощью WPF можно создавать широкий спектр как автономных, так и размещенных в браузере приложений. В основе WPF лежит векторная система рисовки, не зависящая от разрешения и созданная с расчетом на возможности современного графического оборудования. WPF расширяет базовую систему полным набором функций разработки приложений. Язык XAML (Extensible Application Markup Language) создан для управления элементами управления, привязкой данных, макетом, двухмерной и трехмерной графикой, анимацией, стилями, шаблонами, документами, мультимедиа, текстом и оформлением. WPF входит в состав Microsoft .NET Framework и позволяет создавать приложения, включающие другие элементы библиотеки классов .NET Framework.
  • 3. http://www.slideshare.net/IgorShkulipa 3 Общие сведения о WPF WPF существует в качестве подмножества типов .NET Framework, которые занимают большую часть в пространстве имен System.Windows. Для поддержки некоторых более мощных возможностей WPF и для упрощения процесса программирования WPF включает дополнительные программные конструкции, которые расширяют свойства и события: свойства зависимостей и перенаправленные события.
  • 4. http://www.slideshare.net/IgorShkulipa 4 Разметка XAML ― это основанный на XML язык разметки, который используется для декларативной реализации внешнего вида приложения. Обычно он используется для создания окон, диалоговых окон, страниц и пользовательских элементов управления, а также для их заполнения элементами управления, фигурами и графикой. <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="170.27" Width="266.441"> <Grid HorizontalAlignment="Left" Height="131" VerticalAlignment="Top" Width="254" Margin="0,0,0,-6"> <TextBox HorizontalAlignment="Left" Height="40" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="258"/> <Button Content="Button" HorizontalAlignment="Left" Margin="10,45,0,0" VerticalAlignment="Top" Width="234" RenderTransformOrigin="0.178,0.499" Height="76"/> </Grid> </Window>
  • 5. http://www.slideshare.net/IgorShkulipa 5 Язык XAML XAML — это декларативный язык разметки. С точки зрения модели программирования .NET Framework язык XAML упрощает создание пользовательского интерфейса для приложения .NET Framework. Можно создать видимые элементы пользовательского интерфейса в декларативной разметке XAML, а затем отделить определение пользовательского интерфейса от логики времени выполнения, используя файлы кода программной части, присоединенные к разметке с помощью определений разделяемых классов. Язык XAML напрямую представляет создание экземпляров объектов в конкретном наборе резервных типов, определенных в сборках. В этом заключается его отличие от большинства других языков разметки, которые, как правило, представляют собой интерпретируемые языки без прямой связи с системой резервных типов. Язык XAML обеспечивает рабочий процесс, позволяющий нескольким участникам разрабатывать пользовательский интерфейс и логику приложения, используя потенциально различные средства. При представлении в виде текста файлы XAML являются XML-файлами, которые обычно имеют расширение .xaml. Файлы можно сохранять в любой кодировке, поддерживаемой XML, но обычно используется кодировка UTF-8. <StackPanel> <Button Content="Click Me"/> </StackPanel>
  • 6. http://www.slideshare.net/IgorShkulipa 6 XAML Синтаксис языка XAML основан преимущественно на XML. Согласно определению, допустимый код XAML должен быть допустимым кодом XML. Однако некоторые синтаксические принципы XAML имеют другое, более сложное значение, будучи допустимыми в XML через спецификацию XML 1.0. Например, XAML поддерживает синтаксис свойства элемента, при котором значения свойства могут быть установлены через элементы, а не через строковые значения атрибутов или содержимого. Для XML этот синтаксис свойства элемента просто был бы сочтен элементом, в имени которого есть точка. Visual Studio помогает соблюдать правила синтаксиса XAML как в текстовом редакторе языка XAML, так и в рабочей области конструирования XAML.
  • 7. http://www.slideshare.net/IgorShkulipa 7 Пространства имен XAML С помощью пространств имен в программной инфраструктуре можно отделить идентификаторы, объявленные пользователем, от идентификаторов, объявленных самой инфраструктурой, устранить неоднозначность идентификаторов, используя префиксы пространства имен, и т. д. В языке XAML эту функцию выполняет собственная концепция пространства имен XAML. Вот как в языке XAML применяется и развивается концепция пространств имен XML. • Для объявления пространств имен используется зарезервированный атрибут пространства имен по умолчанию xmlns, и значением этого атрибута является универсальный код ресурса (URI). • Пространства имен не по умолчанию объявляются в XAML с назначением им префиксов; использование префиксов в элементах и атрибутах рассматривается как техника ссылки на соответствующее пространство имен. • Если атрибут "xmlns" не указан, в языке XAML применяется концепция пространства имен по умолчанию. Пространство имен по умолчанию может не являться пространством имен по умолчанию на языке XML и может быть определено различными способами для каждой программной архитектуры XAML. • Определения пространств имен в XML-документе наследуются от родительского элемента к дочернему. • Атрибуты элемента наследуют пространства имен элемента, поэтому префиксы в атрибутах обычно не используются. В корневом элементе XAML-файла всегда объявляется пространство имен XAML по умолчанию. Пространство имен XAML по умолчанию определяет, какие элементы могут быть объявлены без указания уточняющего префикса.
  • 8. http://www.slideshare.net/IgorShkulipa 8 Собственное пространство имен языка XAML Среди пространств имен XAML можно выделить одно, которое объявляется почти в каждом файле XAML среды выполнения Windows, — это пространство имен для элементов, которые определены в языке XAML. По соглашению собственное пространство имен языка XAML сопоставляется с префиксом "x". Префикс "x" (собственное пространство имен языка XAML) содержит несколько программных конструкций, которые часто используются в XAML-коде. x:Key Задает определяемый пользователем уникальный ключ для каждого ресурса в ResourceDictionary. Строка токена ключа является аргументом расширения разметки StaticResource, с помощью которого можно получить любой такой ресурс из другого использования XAML. x:Class Определяет пространство имен и имя класса для кода, предоставляющего XAML- страницу с выделенным кодом. Эта конструкция называет класс, созданный или присоединенный при выполнении построения и поддерживающий компилятор разметки XAML при компиляции приложения. Необходимо иметь такой класс для поддержки выделенного кода или же инициализировать XAML-содержимое как Window.Content в стандартной модели активации приложения. x:Name Задает имя экземпляра объекта времени выполнения, созданного в исполняемом коде по итогам обработки элемента, который определяет этот объект в XAML- коде. Можно использовать x:Name для идентификации элемента, что может быть полезно в случае, если FrameworkElement.Name не поддерживается этим типом элемента. Включение x:Name в код XAML можно рассматривать как объявление именованных переменных в коде, и, как будет описано дальше, это именно то, что происходит при загрузке XAML в качестве компонента приложения среды выполнения Windows. Директива x:Uid Определяет элементы, которые должны использовать локализованные ресурсы для некоторых значений их свойств.
  • 9. http://www.slideshare.net/IgorShkulipa 9 Расширения разметки Расширения разметки — это структура языка XAML, которую часто использует реализация XAML в среде выполнения Windows. В синтаксисе атрибутов XAML фигурные скобки "{" и "}" обозначают использование расширения разметки XAML. Они предписывают синтаксическому анализатору XAML отклониться от общей процедуры обработки значений атрибутов как строковых литералов или значений, напрямую преобразуемых в строки. Вместо этого средство синтаксического анализа языка XAML вызывает код, на который опирается данное расширение разметки, и предоставляет альтернативный результат в виде объекта или поведения. Расширения разметки могут иметь аргументы, содержащиеся также внутри фигурных скобок. Реализация XAML в среде выполнения Windows использует следующие расширения разметки, которые определены в пространстве имен XAML по умолчанию и распознаются синтаксическим анализатором XAML среды выполнения Windows: • Binding: поддерживает привязку данных, которая откладывает значение свойства, пока оно не будет истолковано в соответствии с контекстом данных, существующим только во время выполнения. Расширение разметки поддерживает широкий диапазон аргументов. Подробнее см. в разделе Привязка расширения разметки. • StaticResource: поддерживает ссылку на значения ресурсов, определенные в ResourceDictionary, которые могут находиться в другом XAML-файле, но которые, в конечном счете, средство синтаксического анализа должно находить во время загрузки. Аргумент использования {StaticResource} должен определять ключ для ресурса с ключом в ResourceDictionary. • TemplateBinding: особый случай Binding, который поддерживает шаблоны элемента управления в XAML и их возможное использование во время выполнения. • RelativeSource: делает возможной определенную форму привязки шаблонов.
  • 10. http://www.slideshare.net/IgorShkulipa 10 События XAML — декларативный язык для объявления объектов и их свойств, но он также содержит синтаксические средства для назначения обработчиков событий объектам в разметке. Синтаксис событий XAML позволяет затем интегрировать объявленные в XAML-коде события через модель программирования приложений среды выполнения Windows. Имя события задается как имя атрибута объекта, в котором обрабатывается событие. В качестве значения атрибута указывается имя функции обработчика событий, которая определяется в коде. Обработчик XAML использует это имя для создания представления делегирования в загруженном дереве объектов и добавляет указанный обработчик во внутренний список обработчиков.
  • 11. http://www.slideshare.net/IgorShkulipa 11 Перенаправленные события Перенаправленное событие — это тип события, который может вызывать обработчики для нескольких прослушивателей в элементе дерева, а не только для объекта, вызвавшего событие. Перенаправленное событие — это событие CLR, которое резервируется экземпляром класса RoutedEvent и обрабатывается в системе событий Windows Presentation Foundation (WPF). Обычно в приложении WPF содержится много элементов. В зависимости от того, созданы элементы в коде или объявлены в XAML, они связаны в дереве элементов друг с другом. Маршрут события может проходить в одном из двух направлений в зависимости от определения события, но обычно маршрут проходит от исходного элемента и затем "всплывает" вверх по дереву элементов до тех пор, пока не достигнет корневого элемента дерева (как правило, страница или окно).
  • 13. http://www.slideshare.net/IgorShkulipa 13 Код основного окна using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace WpfApplication1 { /// <summary> /// Логика взаимодействия для MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Button_Click_1(object sender, RoutedEventArgs e) { textBox1.Text = "Hello, World WPF!"; } } }
  • 14. http://www.slideshare.net/IgorShkulipa 14 Связывание данных Простейший способ привязки данных подразумевает ситуацию, когда исходным объектом является элемент WPF, а исходным свойством — свойство зависимости. Свойство зависимости имеет встроенную поддержку уведомлений об изменениях. В результате, когда значение свойства зависимости изменяется в исходном объекте, привязанное свойство целевого объекта немедленно обновляется. <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="278.003"> <Grid HorizontalAlignment="Left" Height="321" VerticalAlignment="Top" Width="268" Margin="0,0,0,-1"> <Slider x:Name="fontResizer" HorizontalAlignment="Left" Margin="26,32,0,0" VerticalAlignment="Top" Width="214" Maximum="72" Minimum="10" TickFrequency="5" SmallChange="1" TickPlacement="Both"/> <TextBlock x:Name="textBlock" HorizontalAlignment="Left" Margin="26,86,0,0" TextWrapping="Wrap" Text="Some Text" VerticalAlignment="Top" Width="214« FontSize="{Binding ElementName=fontResizer, Path=Value}"/> </Grid> </Window>
  • 16. http://www.slideshare.net/IgorShkulipa 16 Стили Стилем называется коллекция значений свойств, которые могут применяться к элементу. Система стилей WPF играет ту же роль, которую играет стандарт каскадных таблиц стилей (Cascading Style Sheet — CSS) в HTML-разметке. Подобно CSS, стили WPF позволяют определять общий набор характеристик форматирования и применять его повсюду в приложении для обеспечения согласованного вида. <Window.Resources> <FontFamily х:Key="ButtonFontFamily">Times New Roman</FontFamily> <sys:Double x:Key="ButtonFontSize">18</s:Double> <FontWeight x:Key="ButtonFontWeight">Bold</FontWeight> </Window.Resources> В этом фрагменте кода разметки в окно добавляются три ресурса: объект FontFamily с именем шрифта, который должен использоваться, объект Double с числом 18 и перечислимое значение FontWeight.Bold. Здесь предполагается, что .NET-пространство имен System было отображено на префикс sys пространства имен XML. Далее можно использовать эти ресурсы для установки внешнего вида элементов.
  • 17. http://www.slideshare.net/IgorShkulipa 17 Пример определения стилей Описание стиля: <Window.Resources> <Style x:Key="MyButtonStyle"> <Setter Property="Control.FontFamily" Value="Calibri"></Setter> <Setter Property="Control.FontSize" Value="18"></Setter> <Setter Property="Control.FontWeight" Value="Bold"></Setter> <Setter Property="Control.Padding" Value="5"></Setter> <Setter Property="Control.Margin" Value="5"></Setter> </Style> </Window.Resources> Применение стиля <Button Content="Button" Style="{StaticResource MyButtonStyle}" />
  • 19. http://www.slideshare.net/IgorShkulipa 19 Лабораторная работа №10. WPF Создать приложение для синхронизации файлов в разных директориях (например, директория на жестком диске и на флеш-накопителе). Реализовать функции (с одной и другой стороны): • Файл изменен • Файл удален • Файл создан Интерфейс приложения создать на основе WPF. Реализовать ведение логов в виде XML. Проводить анализ необходимости синхронизации, учитывая предыдущие изменения, записанные в XML- логе.