Новые возможности в Windows Presentation Foundation 3.5
Обновлен: Ноябрь 2007
В этом разделе приводится краткое описание основных различий между Windows Presentation Foundation (WPF) версий 3.0 и 3.5.
В этом разделе содержатся следующие подразделы.
- Совместимость с версией 3.0
- Приложения
- Графика
- Трехмерная графика
- Привязка данных
- Элементы управления
- Документы
- Примечания
- Связанные разделы
Совместимость с версией 3.0
Прямая и обратная совместимость
Приложение, собранное в WPF 3.0, будет выполняться в среде выполнения WPF 3.5.
Приложение, собранное в WPF 3.5 будет выполняться в среде выполнения версии 3.0, если приложение использует только компоненты, доступные в WPF 3.0.
В WPF 3.5 определено новое пространство имен XML, https://schemas.microsoft.com/netfx/2007/xaml/presentation. При сборке приложения с помощью WPF 3.5 можно использовать это пространство имен или пространство имен, определенное в WPF 3.0.
Установка определенного времени выполнения
Приложения, собранные в WPF 3.0, могут ориентироваться на любую версию инфраструктуры, большую или равную версии среды изначально собранного приложения. Дополнительные сведения см. в разделе Практическое руководство. Использование файла конфигурации приложения для назначения версии .NET Framework.
Приложения
Следующие усовершенствования были внесены в модель приложения:
полная встроенная поддержка визуальных и невизуальных надстроек из автономных приложений и XBAP (XAML browser applications — приложения обозревателя XAML);
поддержка запуска XBAP в FireFox;
файлы cookie могут быть использованы совместно XBAP и веб-приложениями из одного узла
улучшенные возможности технологии IntelliSense XAML для повышения производительности;
расширенная поддержка локализации.
Визуальные и невизуальные надстройки WPF
Расширяемое приложение предоставляет функциональные возможности, которые позволяют другим приложениям интегрироваться с ним и расширять свою функциональность. Надстройки являются обычным способом продемонстрировать расширяемость приложений. В .NET Framework надстройка — это обычно сборка, представленная в виде библиотеки DLL. Надстройка динамически загружается ведущим приложением во время выполнения, чтобы использовать и расширять службы, предоставляемые этим приложением. Ведущее приложение и надстройка взаимодействуют друг с другом через известное соглашение, которое обычно представляет собой общий интерфейс, предоставляемый ведущим приложением.
Если приложение поддерживает надстройки, производитель и сторонние разработчики могут создавать надстройки для него. Существует множество примеров таких типов приложений, включая Office, Visual Studio и Проигрыватель Windows Media. Например, поддержка надстроек для Проигрыватель Microsoft Windows Media, позволяет сторонним разработчикам создавать DVD-диск-декодеры и кодировщики MP3.
.NET Framework реализует строительные блоки, позволяющие приложениям поддерживать надстройки. Однако построение этой поддержки в связи со сложностью характеризуется высокими затратами, в том числе временными, так как разработка надежной надстройки требует обработки следующих аспектов:
обнаружение — поиск надстроек, которые соответствуют контрактам, поддерживаемым ведущими приложениями;
активация — загрузка, запуск и установка соединения с надстройками;
изоляция — использование доменов или процессов приложений для установления границ изоляции, защищающих приложения от потенциальных проблем безопасности и неполадок выполнения в надстройках;
связь — разрешение надстройкам и ведущим приложениям взаимодействовать друг с другом через границы изоляции, путем вызова методов и передачи данных;
управление временем существования — загрузка и выгрузка доменов и процессов приложений ясным, прогнозируемым способом (см. раздел Общие сведения о доменах приложений);
управление версиями — проверка того, что ведущие приложения и надстройки могут взаимодействовать после выпуска новых версий.
Теперь решение всех этих проблем снимается с разработчика благодаря тому, что .NET Framework включает набор типов, размещенных в пространстве имен System.AddIn, которые собирательно называются «модель надстройки». Модель надстройки .NET Framework предоставляет функциональные возможности для общих типов поведения общих надстроек, перечисленных выше.
Тем не менее, в некоторых случаях может оказаться желательным вариант разрешения интеграции надстройки с Пользовательские интерфейсы ведущего приложения и расширения его функциональных возможностей. WPF расширяет модель надстройки .NET Framework, чтобы обеспечить такую поддержку, которая основывается на отображении элемента FrameworkElement, который принадлежит надстройке Пользовательские интерфейсы ведущего приложения. Это позволяет разработчикам WPF создавать приложения для поддержки следующих общих сценариев:
приложение рассыльного типа, обеспечивающее дополнительные службы с «дружественными» надстройками сторонних разработчиков,
игровые приложения, разработанные для размещения игр независимых производителей,
приложения чтения содержимого, размещающие рекламные объявления,
Mashup-приложения, размещающие произвольные модули; например, боковые панели Windows.
Кроме того, надстройки WPF могут размещаться как в автономных приложениях, так и в XBAP.
Дополнительные сведения см. в разделе Общие сведения о надстройках Windows Presentation Foundation.
Поддержка XBAP средой FireFox
Подключаемый модуль для WPF 3.5 позволяет запускать XBAP из Firefox 2.0, эта возможность недоступна в WPF 3.0. Основные функции включают следующее:
если Firefox 2.0 является обозревателем по умолчанию, XBAP соблюдают заданные настройки. То есть Internet Explorer не используется для XBAP, если Firefox 2.0 используется по умолчанию;
параметры безопасности, доступные в XBAP, работающих в среде Internet Explorer, доступны для XBAP в среде Firefox 2.0, в том числе предоставление безопасной среды Sandbox для обеспечения частичной безопасности. Дополнительные средства безопасности, предоставляемые обозревателем, определяются обозревателем.
Файлы cookie
Автономные приложения WPF и XBAP могут создавать, получать и удалять постоянные cookie-файлы и cookie сеанса. В WPF 3.5 постоянные cookie-файлы могут совместно использоваться XBAP, веб-серверами и файлами HTML, имеющими один и тот же исходный узел.
Дополнительные сведения о файлах cookie содержатся в разделе Общие сведения о переходах.
Улучшения технологии IntelliSense Visual Studio
Теперь появилась возможность добавлять новый элемент XAML с помощью редактора Visual StudioXAML, присваивать ему имя (используя атрибут Name), обращаться к нему из кода программной части и просматривать его составляющие из обозревателя IntelliSense.
Локализация
В WPF 3.5 добавлена поддержка следующих наборов символов:
бенгали,
деванагари,
гуджарати,
гурмукхи,
каннада,
малаялам,
ория,
тамильский,
телугу.
Дополнительные сведения см. в разделе Глобализация и Windows Presentation Foundation.
Поддержка редактора метода ввода (IME) для элемента TextBox
Класс FrameworkTextComposition теперь включает следующие свойства:
Свойство FrameworkTextComposition используется как свойство TextCompositionEventArgs.TextComposition, когда пользователь вводит текст в элемент управления TextBox, используя IME, и возникают события TextInput,TextInputUpdate или TextInputStart.
Графика
Теперь имеется возможность помещать в кэш изображения, загружаемые по протоколу HTTP в локальный кэш временных файлов Microsoft Internet Explorer., так что при последующих запросах изображения загружаются с локального диска, а не из Интернета. В зависимости от размера изображения, эта функция может значительно улучшить производительность сети. Для поддержки этой возможности были добавлены следующие члены:
BitmapDecoder.Create(Uri, BitmapCreateOptions, BitmapCacheOption, RequestCachePolicy)
BitmapFrame.Create(Uri, BitmapCreateOptions, BitmapCacheOption, RequestCachePolicy)
Событие BitmapSource.DecodeFailed было добавлено для уведомления об ошибке загрузки изображения из-за повреждения заголовка.
Трехмерная графика
Следующие новые возможности добавлены в модель трехмерных объектов.
Поддержка ввода, фокуса и событий в трехмерной графике
Модель трехмерных объектов теперь поддерживает основные понятия элемента UIElement, такие как ввод, фокус и события. Новые классы, предоставляющие эти службы, представляют собой класс UIElement3D и его производные классы ContainerUIElement3D и ModelUIElement3D. Примеры см. в разделах Пример создания сферы на базе класса UIElement3D и Пример обработки событий трехмерными объектами.
Интерактивное размещение двухмерного содержимого на трехмерном объекте
Новый класс Viewport2DVisual3D обеспечивает поддержку размещения интерактивного содержимого двухмерного объекта на трехмерном объекте. Пример см. в разделе Пример размещения интерактивного двумерного объекта на трехмерном.
Новые службы преобразований
Новые классы GeneralTransform3D, GeneralTransform2DTo3D и GeneralTransform3DTo2D предоставляют возможность преобразования между объектами Visual3D, а также из двухмерных в трехмерные и наоборот.
Привязка данных
В связывание данных были внесены следующие усовершенствования:
новый механизм отладки облегчает отладку привязки данных;
модель данных включает проверку слоя бизнес-логики, предоставляя поддержку интерфейса IDataErrorInfo. Кроме того, модель проверки теперь поддерживает использование синтаксиса свойства для задания правил проверки;
модель привязки данных теперь поддерживает LINQ и XLINQ.
Новый механизм отладки
Стало проще выполнять отладку привязки данных. Можно установить новое вложенное свойство PresentationTraceSources.TraceLevel для привязанного объекта, чтобы получать сведения о состоянии конкретной привязки. PresentationTraceSources является статическим классом в пространстве имен System.Diagnostics.
Поддержка IDataErrorInfo
Модель проверки данных теперь поддерживает интерфейс IDataErrorInfo, позволяющий бизнес-объектам проверять входные данные. Интерфейс определяет индексатор, который принимает имя свойства и возвращает строку. Добавлено правило проверки DataErrorValidationRule, которое проверяет наличие исключений, возвращаемых индексатором. Пример см. в разделе Пример проверки уровня бизнес-логики.
Альтернативный синтаксис проверки данных
Классы Binding и MultiBinding имеют два новых свойства: ValidatesOnExceptions и ValidatesOnDataErrors. Эти два свойства обеспечивают альтернативу параметру ExceptionValidationRule или DataErrorValidationRule в синтаксисе элемента.
Поддержка LINQ и XLINQ
Улучшения были внесены в класс BindingListCollectionView, чтобы обеспечить лучшую поддержку привязки к коллекции типа BindingList<T> и LINQ. Поведение привязок данных с CollectionView через IEnumerable также улучшена для обеспечения большей производительности и дополнительной поддержки для привязки к результатам, полученным от LINQ. Пример LINQ см. в разделе Пример использования запроса LINQ.
Кроме того, модель привязки данных также обеспечивает поддержку XLINQ.
Элементы управления
RichTextBox
Элемент RichTextBox теперь сохраняет настраиваемые объекты TextElement при сохранении объекта TextElement и при участии объекта TextElement в операциях с буфером обмена. Такой режим поддерживается следующими новыми API-интерфейсами:
класс TextRange содержит новую перегрузку Save(Stream, String, Boolean), которая принимает логическое значение, определяющее, должны ли сохраняться настраиваемые объекты TextElement;
класс TextElementEditingBehaviorAttribute позволяет указать поведение настраиваемого объекта TextElement. При установке значения false для свойств TextElementEditingBehaviorAttribute.IsMergeable и TextElementEditingBehaviorAttribute.IsTypographicOnly элемент управления RichTextBox сохраняет границы и содержимое настраиваемого объекта TextElement, когда пользователь изменяет содержимое RichTextBox.
Элемент управления RichTextBox имеет новое свойство IsDocumentEnabled. Когда свойство IsDocumentEnabled имеет значение true, элементы пользовательского интерфейса, такие как кнопки и гиперссылки, принимают вводимые пользователем данные.
TextBoxBase
Элемент управления TextBoxBase имеет новое свойство UndoLimit, которое задает максимальное количество действий, доступных для элемента управления.
SoundPlayerAction
Элемент управления SoundPlayerAction теперь может загрузить звуковые файлы, которые могут быть идентифицированы по относительному и абсолютному пакету Pack URI (uniform resource identifiers — универсальные коды ресурса):
файлы ресурсов — звуковые файлы со встроенным действием Resource,
файлы содержимого — звуковые файлы со встроенным действием Content,
файлы узла источника — звуковые файлы со встроенным действием None.
Защищенные методы доступа Set
Методы доступа set следующих свойств стали защищенными, а не внутренними:
Документы
Каждый класс FlowDocumentPageViewer, FlowDocumentScrollViewer и FlowDocumentReader имеет новое открытое свойство Selection. Свойство получает объект TextSelection, представляющий выделенное содержимое документа.
Примечания
Структура примечаний теперь предоставляет возможности устанавливать соответствия заметок с нужными аннотированными объектами. Добавлен новый интерфейс IAnchorInfo. Кроме того, новый метод GetAnchorInfo, возвращающий объект IAnchorInfo, был добавлен к классу AnnotationHelper.
Эти новые дополнения позволяют обеспечить сценарии получения доступ к объекту, к которому привязан аннотированный объект. Пример см. в разделе Пример средства просмотра аннотированного документа с областью примечаний.
См. также
Задачи
Пример средства просмотра аннотированного документа с областью примечаний
Основные понятия
.Архитектура платформы .NET Framework версии 3.5
Новые возможности .NET Framework версии 3.5
Общие сведения о связывании данных