Введение в Kaxaml
Когда вы только приступаете к изучению грамматики XAML, может оказаться удобным в применении бесплатный инструмент под названием https://github.com/punker76/kaxaml.
На заметку! Во многих предшествующих изданиях книги мы направляли читателей на веб-сайт www.kaxaml.com, но, к сожалению, он прекратил свою работу. Ян Каргер (https://github.com/punker76) сделал ответвление от старого кода и потрудился над его улучшением. Его версия инструмента доступна в GitHub по ссылке https://github.com/punker76/kaxaml/releases. Стоит выразить благодарность создателям за великолепный инструмент Kaxaml и Яну за то, что он сохранил его; Kaxaml помог многочисленным разработчикам изучить XAML.
Редактор Kaxaml полезен тем, что не имеет никакого понятия об исходном коде С#, обработчиках ошибок или логике реализации. Он предлагает намного более прямолинейный способ тестирования фрагментов XAML, нежели использование полноценного шаблона проекта WPF в Visual Studio. К тому же Kaxaml обладает набором интегрированных инструментов, в том числе средством выбора цвета, диспетчером фрагментов XAML и даже средством "очистки XAML", которое форматирует разметку XAML на основе заданных настроек. Открыв Kaxaml в первый раз, вы найдете в нем простую разметку для элемента управления :
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
Подобно объекту Window объект Page содержит разнообразные диспетчеры компоновки и элементы управления. Тем не менее, в отличие от Window объекты Page не могут запускаться как отдельные сущности. Взамен они должны помещаться внутрь подходящего хоста, такого как NavigationWindow или Frame. Хорошая новость в том, что в элементах и можно вводить идентичную разметку.
На заметку! Если в окне разметки Kaxaml заменить элементы и элементами и , тогда можно нажать клавишу <F5> и отобразить на экране новое окно.
В качестве начального теста введите следующую разметку в панели XAML, находящейся в нижней части окна Kaxaml:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
В верхней части окна Kaxaml появится визуализированная страница (рис. 24.2).
Во время работы с Kaxaml помните, что данный инструмент не позволяет писать разметку, которая влечет за собой любую компиляцию кода (но разрешено использовать х:Name). Сюда входит определение атрибута х:Class (для указания файла кода), ввод имен обработчиков событий в разметке или применение любых ключевых слов XAML, которые также предусматривают компиляцию кода (вроде FieldModifier или ClassModifier). Попытка поступить так приводит к ошибке разметки.
Пространства имен XML и "ключевые слова" XAML
Корневой элемент XAML-документа WPF (такой как , , или ) почти всегда будет ссылаться на два заранее определенные пространства имен XML:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
Первое пространство имен XML, http://schemas.microsoft.com/winfx/2006/xaml/presentation, отображает множество связанных c WPF пространств имен .NET для использования текущим файлом *.xaml (System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Ink, System.Windows.Media, System.Windows.Navigation и т.д.).
Это отображение "один ко многим" в действительности жестко закодировано внутри сборок WPF (WindowsBase.dll, PresentationCore.dll и PresentationFramework.dll) с применением атрибута [XmlnsDefinition] уровня сборки. Например, если открыть браузер объектов Visual Studio и выбрать сборку PresentationCore.dll, то можно увидеть списки, подобные показанному ниже, в котором импортируется пространство имен System.Windows:
[assembly: XmlnsDefinition(
"http://schemas.microsoft.com/winfx/2006/xaml/presentation",
"System.Windows")]