Тем не менее, "за кулисами" элементы управления документов не используют API-интерфейсы Adobe PDF, а взамен работают с API-интерфейсом XML Paper Specification (XPS). Конечные пользователи никакой разницы не заметят, потому что документы PDF и XPS имеют практически идентичный вид и поведение. В действительности доступно множество бесплатных утилит, которые позволяют выполнять преобразования между указанными двумя файловыми форматами на лету. Из-за ограничений по объему такие элементы управления в текущем издании не рассматриваются.
Общие диалоговые окна WPF
Инфраструктура WPF также предлагает несколько общих диалоговых окон, таких как
OpenFileDialog
и
SaveFileDialog
,
которые определены в пространстве имен
Microsoft.Win32
внутри сборки
PresentationFramework.dll
. Работа с любым из указанных диалоговых окон сводится к созданию объекта и вызову метода
Как и можно было ожидать, в этих классах поддерживаются разнообразные члены, которые позволяют устанавливать фильтры файлов и пути к каталогам, а также получать доступ к выбранным пользователем файлам. Некоторые диалоговые окна применяются в последующих примерах; кроме того, будет показано, как строить специальные диалоговые окна для получения пользовательского ввода.
Краткий обзор визуального конструктора WPF в Visual Studio
Большинство стандартных элементов управления WPF упаковано в пространство имен
System.Windows.Controls
внутри сборки
PresentationFramework.dll
. При построении приложения WPF в Visual Studio множество общих элементов управления находится в панели инструментов при условии, что активным окном является визуальный конструктор WPF.
Подобно другим инфраструктурам для построения пользовательских интерфейсов в Visual Studio такие элементы управления можно перетаскивать на поверхность визуального конструктора WPF и конфигурировать их в окне Properties (Свойства), как было показано в главе 24. Хотя Visual Studio сгенерирует приличный объем разметки XAML автоматически, нет ничего необычного в том, чтобы затем редактировать разметку вручную. Давайте рассмотрим основы.
Работа с элементами управления WPF в Visual Studio
Вы можете вспомнить из главы 24, что после помещения элемента управления WPF на поверхность визуального конструктора Visual Studio в окне Properties (или прямо в разметке XAML) необходимо установить свойство
x:Name
, т.к. это позволяет обращаться к объекту в связанном файле кода С#. Кроме того, на вкладке Events (События) окна Properties можно генерировать обработчики событий для выбранного элемента управления. Таким образом, с помощью Visual Studio можно было бы сгенерировать следующую разметку для простого элемента управления
со связанными элементами. Создавать сложное содержимое подобного рода можно также с применением визуального конструктора Visual Studio. После определения диспетчера компоновки для элемента управления содержимым его можно выбирать в визуальном конструкторе в качестве целевого компонента, на который будут перетаскиваться внутренние элементы управления. Каждый из них можно редактировать в окне Properties. Если окно Properties использовалось для обработки события
Click
элемента управления
Button
(как было показано в предшествующих объявлениях XAML), то IDE-среда сгенерирует пустой обработчик события, куда можно будет добавить специальный код, например:
В главе 24 вы узнали, что при проектировании элемента управления WPF со сложным содержимым удобно пользоваться окном Document Outline (Схема документа) в Visual Studio (открываемое через меню View?Other Windows (Вид?Другие окна)). Для создаваемого элемента Window отображается логическое дерево XAML, а щелчок на любом узле в дереве приводит к его автоматическому выбору в визуальном конструкторе и в редакторе XAML для редактирования.
В текущей версии Visual Studio окно Document Outline имеет несколько дополнительных средств, которые вы можете счесть полезными. Справа от любого узла находится значок, напоминающий глазное яблоко. Щелчок на нем позволяет скрывать или отображать элемент в визуальном конструкторе, что оказывается удобным, когда необходимо сосредоточить внимание на отдельном сегменте, подлежащем редактированию (следует отметить, что элемент будет сокрыт только на поверхности визуального конструктора, но не во время выполнения).