Расширения разметки предлагают способ аккуратного расширения грамматики XAML новой функциональностью. Расширение разметки внутренне представлено как класс, производный от MarkupExtension
. Следует отметить, что необходимость в построении специального расширения разметки возникает крайне редко. Тем не менее, некоторые ключевые слова XAML (вроде х:Array
, x:Null
, х:Static
и х:Туре
) являются замаскированными расширениями разметки!
Расширение разметки помещается между фигурными скобками:
Чтобы увидеть расширение разметки в действии, введите в редакторе Kaxaml следующий код:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:CorLib="clr-namespace:System;assembly=mscorlib">
Прежде всего, обратите внимание, что определение
содержит новое объявление пространства имен XML, которое позволяет получать доступ к пространству имен System
сборки mscorlib.dll
. После установления этого пространства имен XML первым делом с помощью расширения разметки х:Static
извлекаются значения свойств OSVersion
и ProcessorCount
класса System.Environment
.
Расширение разметки х:Туре
обеспечивает доступ к описанию метаданных указанного элемента. Здесь содержимому элементов Label
просто присваиваются полностью заданные имена типов Button
и System.Boolean
из WPF.
Наиболее интересная часть показанной выше разметки связана с элементом ListBox
. Его свойство Itemsourсе
устанавливается в массив строк, полностью объявленный в разметке. Взгляните, каким образом расширение разметки х:Array
позволяет указывать набор подэлементов внутри своей области действия:
На заметку! Предыдущий пример XAML служит только для иллюстрации расширения разметки в действии. Как будет показано в главе 25, существуют гораздо более простые способы наполнения элементов управления ListBox
.
На рис. 24.3 представлена разметка этого элемента
в редакторе Kaxaml.
Вы уже видели многочисленные примеры, которые демонстрировали основные аспекты синтаксиса XAML. Вы наверняка согласитесь, что XAML интересен своей возможностью описывать деревья объектов .NET в декларативной манере. Хотя это исключительно полезно при конфигурировании графических пользовательских интерфейсов, не забывайте о том, что с помощью XAML можно описывать
Построение приложений WPF с использованием Visual Studio
Давайте выясним, как Visual Studio может упростить создание приложений WPF. Хотя строить приложения WPF можно и с применением Visual Studio Code, в Visual Studio Code отсутствует поддержка соответствующих визуальных конструкторов. С другой стороны, благодаря развитой поддержке XAML среда Visual Studio обеспечивает более высокую продуктивность при создании приложений WPF.
На заметку! Далее будут представлены основные особенности применения Visual Studio для построения приложений WPF. В последующих главах при необходимости будут иллюстрироваться дополнительные аспекты этой IDE-среды.
Шаблоны проектов WPF
В диалоговом окне New Project (Новый проект) среды Visual Studio определен набор проектов приложений WPF, в том числе WPF Арр (Приложение WPF), WPF Custom Control Library (Библиотека специальных элементов управления WPF) и WPF User Control Library (Библиотека пользовательских элементов управления WPF). Создайте новый проект WPF Арр (.NET) по имени WpfTesterApp
.
На заметку! При выборе шаблона проектов приложений WPF удостоверьтесь в том, что выбираете шаблон, который содержит в своем названии (.NET), но не (.NET Framework). Текущая версия .NET Core была переименована в просто .NET 5. Если вы выберете шаблон с (.NET Framework) в названии, то будете строить свое приложение, используя .NET Framework 4.x.
Кроме установки комплекта SDK в Microsoft.NET.Sdk
вы получите начальные классы, производные от Window
и Application
, каждый из которых представлен с применением XAML и файла кода С#.
Панель инструментов и визуальный конструктор/редактор XAML