WPF в Visual Studio 2010 – Частина 1: Вступ, Різне, Програмування, статті

З того моменту, як реліз-кандидат Visual Studio 2010 став загальнодоступним, ми почали отримувати запитання від допитливих користувачів про те, як же влаштована сама середу Visual Studio 2010. Зокрема, один з запитувачів хотів би знати, чи будемо ми використовувати всі “чари” WPF тільки в своїх цілях. Будьте впевнені, що відповіддю буде рішуче “ні!”. Ми хочемо, щоб наші користувачі могли скористатися всіма перевагами WPF 4.0 і у власних додатках. Це перша стаття з серії публікацій, в яких будуть викладені деякі поради, описані прийоми і нові можливості WPF 4.0, які ми використовуємо в Visual Studio 2010. Деякі з них базуються на моїй доповіді на конференції професійних розробників (Professional Developers “Conference) в Лос-Анджелесі в листопаді минулого року.


Чому WPF?


Одним з перших заданих питань є питання “чому Ви вибрали WPF?”. Я спробую дати кілька відповідей.


З моменту випуску першої версії WPF NET 3.0, клієнти запитували нас, Microsoft, “Якщо WPF настільки чудова, чому ж Ви не використовуєте її для ваших власних додатків?. Які з продуктів Microsoft побудовані з використанням WPF? Як ми можемо робити ставку на WPF, Якщо Microsoft не готова використовувати її в своїх власних програмах? “.


“На зорі” WPF це були справедливі критичні зауваження, і було чимало здорових дискусій про те, чи готова WPF для використання у великих комерційних або LOB (Line of Business) додатках. У той час, ймовірно, найбільшим і найбільш очевидним прикладом програми Microsoft, написаного з використанням WPF, Було додаток Microsoft Expression Blend, і воно, безумовно, довело життєздатність платформи.


Крім того, вибір WPF був обумовлений і з точки зору архітектури. Visual Studio має давню програмну базу, деякі компоненти і технології якої сягають корінням ще до Visual C + + 6 і Visual Basic 5 десятирічної давності. (Якщо у Вас є час, Ви можете зробити історичний екскурс, прочитавши чудову детальну серію публікацій Рико Маріані (Rico Mariani) з історії Visual Studio). Довгострокова перспектива розвитку Visual Studio передбачає деякі особливості, що розширюють область її застосування, які нинішня архітектура вже не може підтримувати. Архітектурні нововведення в Visual Studio 2010 не орієнтовані виключно на повний перехід до WPF, А призначені для створення презентаційно-нейтральною (presentation neutral) архітектури, яка дозволила б нам відокремити основну бізнес-логіку від рівня візуалізації і дала б гнучкість, необхідну для майбутніх версій. Як технологія, WPF, по суті, надає саме таку архітектуру “розділеного вистави” (separated presentation), яку часто називають “Модель, вид, контролер” (Model, View, Controller) Або “Модель, вид, доповідач” (Model, View, Presenter).


Крім того, в якості планів розвитку Visual Studio 2010 кілька груп розробників, заявили про свої наміри створити ряд абсолютно нових компонентів з використанням WPF. Як тривіального прикладу можна навести новий редактор тексту (Text Editor), але було заявлено і досить інших (новий Architecture Explorer і переглядач графіків, інструменти для паралельної налагодження, наприклад) для того, щоб ми зрозуміли, що необхідно внести зміни і в інші елементи середовища розробки в цілях підтримки WPF як першого шару візуалізації. Очевидно, має існувати якийсь код, спільно використовуваний розробниками для успішної спільної роботи.


Які частини IDE використовують WPF?


Вся “обстановка” в IDE реалізована на WPF. Під цим я маю на увазі, що всі рамки і прикраси документа, і службові вікна є частиною “візуального дерева” (Visual Tree) WPF. У нього включені головне меню, панелі інструментів, контекстні меню і панель статусу. Документ в цілому – по суті, вся система управління вікном – теж WPF, Включаючи оверлейні шари, які з’являються при перетягуванні вікон. Оновлена ​​стартова сторінка (Start Page) так само повністю реалізована на WPF і, при бажанні, Ви можете написати свою власну заміну стартовій сторінці на XAML. Я вже говорив про новий Редакторі Тексту (пишу з великої літери з поваги до фантастичної роботу, виконану групою його розробників), який був створений з нуля з використанням WPF. Використання WPF в редакторі відкриває для розробників можливості удосконалення редактора шляхом створення вражаючих розширення написанням всього декількох рядків коду. Кілька інших часто використовуваних текстових вікон, такі, як “Висновок даннах” (Output) і “Cписок знайденого” (Find Results List) також базуються на новому текстовому редакторі.


Інші часто використовувані вікна, такі як оглядач рішень (Solution Explorer) І панель інструментів (Toolbox) не були перетворені. За великим рахунком, більшість із службових вікон в цьому релізі не було порушено. Частково це пов’язано з браком часу (у нас просто не було часу і сил, щоб перетворити все в WPF), Почасти тому, що в цьому немає нагальної потреби, і частково тому, що ми продовжуємо підтримку інших візуальних технологій, таких як Win32 і Windows Forms . Дійсно, деякі компоненти, такі як Windows Forms Designer, Було б неприродно і не потрібно конвертувати в WPF.


Щоб самостійно побачити, які частини IDE реалізовані на WPF, Ви можете використовувати інструмент “Snoop”, щоб дослідити “візуальні дерева” WPF в Visual Studio. Переконайтеся, що використовуєте найсвіжішу версію 4.0 і оціните приголомшливу 3D-проекцію, щоб побачити Visual Studio з такої сторони, з якою Ви ніколи не бачили її раніше!


Нові можливості WPF


Ось список можливостей WPF, Що з’явилися у версії 4.0, які використовуються в Visual Studio 2010. Я, може, і пропустив кілька (сподіваюся, не найважливіших). Але, якщо і так, я опишу ці можливості в наступних публікаціях.



  1. Visual Studio використовує новий текстовий стек WPF на основі DirectWrite. Цей механізм змінює алгоритм відтворення тексту в WPF, більше орієнтує його на шрифти малого розміру для дисплеїв низького дозволу (96 точок на дюйм). У двох словах, це означає, що текст повинен бути більш чітким і читабельним, ніж якби ми використовували WPF 3.5. Детальніше Ви можете прочитати про це в блозі команди роботи з текстом WPF. Visual Studio використовує новий режим “Display” для відтворення головного вікна, меню, панелі інструментів, рядка стану і в редакторі Тексту.

  2. Редактор Тексту використовує нову функцію WPF, Що поліпшує швидкість прокрутки, якщо обрано режим програмного рендеринга, наприклад, при роботі з віддаленим робочим столом. Замість того, щоб перемальовувати всю область перегляду в редакторі, механізм WPF може розпізнати, коли необхідна горизонтальна або вертикальна прокрутка і оптимізувати операції відтворення. WPF достатньо відправити невелику макро-команду “прокрути цей прямокутник”, а потім відмалювати тільки ті точки зображення, які з’явилися в області перегляду. Для невеликої прокрутки, наприклад, прокручування одного рядка в редакторі, це величезна економія в кількості даних, що передаються по мережі. Називається нова властивість Visual.VisualScrollableAreaClip.

  3. Алгоритм розміщення панелей інструментів WPF і группіруемих панелей (StackPanels) в цілому був оптимізований для підвищення продуктивності. Ріко Маріані (Rico Mariani) описував цю функцію ще стосовно до першої бета-версії, і результати цього поліпшення чітко видно для всіх, хто інтенсивного використовує панелі інструментівWPF у своїх додатках. Ця функція принесе відчутну користь для всіх WPF 4.0-додатків, причому не потрібно буде робити ніяких змін в коді, щоб скористатися всіма її перевагами.

  4. Невеликий, але важливою функцією для Visual Studio є можливість створення основного вікна WPF, Не показуючи його. Це дозволяє зробити метод NewWindowInteropHelper.EnsureHandle. Він використовується в ситуаціях, коли Visual Studio створюється програмно, наприклад, в режимі “Design Time Extensibility “Або при складанні програми в режимі командного рядка.

  5. Для взаємодії з меню й панелями інструментів з клавіатури в Visual Studio використовує нову функцію WPF “режим меню” (MenuMode). Вона дозволяє перенаправити повідомлення в меню або панель інструментів без “крадіжки” фокусу введення в активного в даний момент елемента. Без цієї функції деякі сценарії в Visual Studio було б неможливо здійснити на практиці з використанням WPF. В цілому ж, проблема відстеження фокуса введення заслуговує окремої публікації, і це буде однією з тем в майбутніх статтях цієї серії.

Це все, що я хотів сказати у цій вступній публікації. У мене є чорнові начерки з інших тем, які я хочу висвітлити, в тому числі і “відстеження фокуса введення”, про який я щойно говорив. Частина 2 охоплюватиме поради щодо підвищення ефективності, і деякі прийоми, які ми використовували в WPF для оптимізації швидкості нового інтерфейсу користувача. Я попрошу та інших членів нашої команди написати про свою участь в процесі розробки, і ми, можливо, пізніше повернемося до теми налаштування продуктивності. Крім того, не соромтеся задавати в коментарі питання, які Вас цікавлять, оскільки це допоможе мені в створенні частини серії.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*