2012-03-02 3 views
15

Как я пишу этот вопрос, через 2 дня после того, как была выпущена бета-версия .NET 4.5, страница What's New in WPF 4.5 Version 4.5 Beta на MSDN по-прежнему отображает «Интеграция WPF с графическими пользовательскими интерфейсами win32» в качестве области, в которой WPF 4.5 предлагает улучшения. Эта страница рассказывает о двух новых свойствах на HwndHost, которые поддерживают это: IsRedirected и CompositionMode. Кроме того, на странице верхнего уровня what's new in .NET 4.5 beta упоминается эта интеграция как новая функция.Поддерживается ли поддержка Airspace определенно в WPF 4.5?

Опять же, поскольку я пишу это, есть страницы для этих двух предметов. У вас есть IsRedirected here и CompositionMode here. (Update двадцать седьмого Jan 2014:. Страницы оригинала больше нет, поэтому я переместил эти ссылки, чтобы указать на копию Internet Archive)

Однако, если вы идете в документацию для HwndHost itself, ни одно из этих свойств не является настоящее время. И они, похоже, тоже не находятся в Visual Studio.

Таким образом, похоже, что слухи верны - похоже, что улучшения в воздушном пространстве для взаимодействия были отброшены. Но на всякий случай, если кто-либо из Microsoft читает это, было бы хорошо, если бы: а) мы могли получить положительное подтверждение и б) упомянутые выше страницы могли быть обновлены, чтобы не допустить наших надежд.

Обновление 27 января 2014 года: Я обновил ссылки для IsRedirected и CompositionMode, чтобы указать в Интернет-архив, потому что исходные ссылки теперь мертвы. Также обратите внимание, что страницы «Что нового» больше не упоминают об этом, потому что эти ссылки теперь доступны для окончательной версии. Вы можете видеть старые страницы, которые были текущими, когда я изначально задавал этот вопрос по адресу this archived page и here.

+0

Я не понимаю значение понятия «воздушное пространство» в названии. Могли бы вы объяснить? –

+0

Это действительно вопрос? Или больше из FYI? – GWLlosa

+9

Это вопрос. Воздушное пространство - очень известная проблема в WPF - это относится к тому факту, что две разные технологии пользовательского интерфейса (например, классические Win32 и WPF) не могут передавать пиксели в окне. Одна из самых больших новых функций, предназначенных для WPF 4.5, заключалась в том, что ограничения воздушного пространства, наконец, будут отменены. Теперь он внезапно исчез из документов. Я надеялся, что кто-то из Microsoft сможет подтвердить или опровергнуть, действительно ли это произошло, потому что эта ранее основная функция заголовка теперь, по-видимому, находится в подвешенном состоянии - официально не отбрасывается, но также не определенно работает. –

ответ

5

Предложение на «Bring back the HwndHost.IsRedirected and CompositionMode» было опубликовано в Visual Studio UserVoice.

Microsoft отказался от него, говоря:

в это время, мы не сможем добавить функцию WPF и .NET Framework.

Он также выглядит как страницы MSDN, с которыми вы связаны, были сняты.

+0

Я обновил ссылки, чтобы ссылаться на копии в интернет-архиве, поэтому люди могут следить за археологией этого, если они заинтересованы. –

11

Существует довольно хороший blog post от Dwayne Need, который описывает экстраординарные усилие, которое они ставят, пытаясь заставить его работать. Ничто не тонкое, они, например, заканчивают перехват более 200 функций GDI, чтобы заставить их играть вместе с моделью рендеринга WPF. Ожидаемый результат:

Вы можете визуализировать мое сердце, когда после обширного обзора мы решили, что мы не можем отправить эту функцию. Наша забота заключалась в том, что нам пришлось слишком глубоко взломать систему, и это было слишком сложно объяснить, не говоря уже о поддержании. Несмотря на то, что мы требовали, чтобы разработчики явно включили эту функцию для каждого HwndHost, мы почувствовали, что проблемы, с которыми они столкнулись, будут сбивать с толку, и подготовка наших инженеров поддержки для обработки эскалаций будет очень сложной. Даже к концу нашего развития мы боролись с длинным хвостом и проблемами производительности.

Это именно такая глубокая системная интеграция, которая должна быть выполнена командой платформы Win32, официально санкционированной и поддерживаемой. С Win8 мы начинаем видеть некоторые дополнительные улучшения в этом пространстве, как отмечалось ранее в API DirectComposition.К сожалению, до сих пор невозможно построить такой же богатый композитный опыт, который мы разработали.

Независимо от того, собирается ли группа Windows совершить такую ​​интеграцию, прямо сейчас остается открытым вопрос. Они, конечно, вкладывали свои деньги на совершенно другую лошадь и потратили много усилий на WinRT, модель рендеринга, которая, безусловно, вдохновлена ​​WPF, но не делает ничего, чтобы сделать ее лучше. Если это будет решаться вообще, то рассчитывайте на лет, чтобы добраться туда.

Проверьте также остальную часть сообщения в блоге. Он имеет превосходные, хотя и высокоуровневые, рекомендации по решению существующих проблем воздушного пространства.

Смежные вопросы