Поддерживается ли поддержка Airspace определенно в WPF 4.5?
Как я пишу этот вопрос, через 2 дня после выхода бета-версии .NET 4.5 Что В новой версии WPF 4.5 версии 4.5 Beta на MSDN все еще отображается "Интеграция WPF с графическими пользовательскими интерфейсами win32" как область, в которой WPF 4.5 предлагает улучшения. Эта страница рассказывает о двух новых свойствах на HwndHost
, которые поддерживают это: IsRedirected
и CompositionMode
. Кроме того, верхний уровень что нового в .NET 4.5 beta указывает на эту интеграцию как новая функция.
Опять же, когда я пишу это, есть страницы для этих двух элементов. У вас есть IsRedirected здесь и CompositionMode здесь. ( Обновление 27 января 2014 года: исходные страницы больше недоступны, поэтому я переместил эти ссылки, чтобы указать на копии интернет-архива.)
Однако, если вы перейдете к документам для HwndHost, ни одно из этих свойств не присутствует. И они, похоже, тоже не находятся в Visual Studio.
Таким образом, казалось бы, слухи верны - похоже, что улучшения в воздушном пространстве для взаимодействия были отброшены. Но на всякий случай, если кто-либо из Microsoft читает это, было бы хорошо, если бы: а) мы могли получить положительное подтверждение и б) страницы, упомянутые выше, могли бы быть обновлены, чтобы перестать надеяться.
Обновление 27 января 2014 года: Я обновил ссылки для IsRedirected и CompositionMode, чтобы указать в Интернет-архив, потому что исходные ссылки теперь мертвы. Также обратите внимание, что страницы "Что нового" больше не упоминают об этом, потому что эти ссылки теперь доступны для окончательной версии. Вы можете видеть старые страницы, которые были текущими, когда я изначально задал этот вопрос на эту заархивированную страницу и здесь.
Ответы
Ответ 1
В Visual Studio UserVoice было опубликовано предложение вернуть HwndHost.IsRedirected и CompositionMode".
Microsoft отказалась от этого, сказав:
в настоящее время мы не сможем добавить эту функцию в WPF и .NET Framework.
Также похоже, что страницы MSDN, с которыми вы связаны, были сняты.
Ответ 2
Существует довольно хорошее сообщение в блоге от Dwayne Need, в котором описывается необычайное усилие, которое они прилагают, пытаясь заставить его работать. Ничто не тонкое, они, например, заканчивают перехват более 200 функций GDI, чтобы заставить их играть вместе с моделью рендеринга WPF. Результат ожидался:
Вы можете изобразить мое сердце, когда после обширного обзора мы решили, что мы не можем отправить эту функцию. Наша забота заключалась в том, что нам пришлось слишком глубоко взломать систему, и это было слишком сложно объяснить, не говоря уже о поддержании. Несмотря на то, что мы требовали, чтобы разработчики явно включили эту функцию для каждого HwndHost, мы почувствовали, что проблемы, с которыми они столкнулись, будут сбивать с толку, и подготовка наших инженеров поддержки для обработки эскалаций будет очень сложной. Даже к концу нашего развития мы боролись с длинным хвостом и проблемами производительности.
Это именно такая глубокая системная интеграция, которую должна выполнить команда разработчиков Win32, официально санкционированная и поддерживаемая. С Win8 мы начинаем видеть некоторые дополнительные улучшения в этом пространстве, как отмечалось ранее в API DirectComposition. К сожалению, до сих пор невозможно построить такой же богатый композитный опыт, который мы разработали.
Будет ли группа Windows собираться совершить такую интеграцию, сейчас вопрос открытый. Они, конечно же, вкладывали свои деньги на совершенно другую лошадь и потратили много усилий на WinRT, модель рендеринга, которая, безусловно, вдохновила WPF, но не делает ничего, чтобы сделать ее лучше. Если это будет решаться вообще, то рассчитывайте на годы, чтобы добраться туда.
Также проверяйте остальную часть сообщения в блоге. Он имеет превосходные, хотя и высокоуровневые, рекомендации по решению существующих проблем воздушного пространства.