RSS feed
WPF 4 (Série de posts sobre VS 2010 e .NET 4.0) - ScottGu's Blog em Português

WPF 4 (Série de posts sobre VS 2010 e .NET 4.0)


[Além do blog, agora estou usando o Twitter para atualizações rápidas e para compartilhar links. Você pode me seguir no Twitter em http://www.twitter.com/scottgu (@scottgu é o meu nome no Twitter)]

Este é o décimo primeiro de uma série de posts que estou escrevendo sobre o próximo lançamento do VS 2010 e .NET 4. O post de hoje abrange o WPF 4.

Melhorias do WPF 4

O WPF (Windows Presentation Foundation) é um dos principais componentes do .NET Framework, e permite aos desenvolvedores criar aplicações clientes ricas e diferenciadas.  O WPF 4 inclui maior produtividade, desempenho e melhorias de capacidade - em especial nas áreas de controles, XAML, textos, gráficos, integração com o Windows 7 (multitoque, integração com a barra de tarefas, etc), fundamentos core, e implantação/instalação.  Este é o primeiro de vários posts que eu vou escrever nos próximos meses sobre algumas das melhorias e novas funcionalidades.

Vou escrever um post separado em breve que abrange alguns dos maiores avanços do WPF e o designer da Silverlight que acopanham o VS 2010 - o qual inclui também várias melhorias.

Controles

imagem Controles para criar Aplicações Clientes Ricas

O WPF 4 acrescenta uma variedade de novos controles que tornam a construção de aplicações de negócio para o cliente mais fácil e rápido. O novo conjunto de controles mais rico inclui controles LOB (Line of Business - Linha de Negócios) essenciais tais como DataGrid, DatePicker e calendário. Estes novos controles são 99% da API e compatíveis no comportamento com os seus homólogos do Silverlight, o que permite aos desenvolvedores a criação de uma experiência consistente entre o cliente e a web, otimizando o fluxo de trabalho através da reutilização de código entre implementações que usam a Silverlight e o WPF.

Bag O'Tricks está de volta

Também estamos lançando uma coleção de oito controles (fora do conjunto oficial) para download chamada de Bag O'Tricks (pacote de controles úteis) do WPF.  Este pacote inclui os seguintes controles: AnimatingTilePanel, ColorPicker, InfoTextBox, ListPager, NumericUpDown Reveal, TransitionsPresenter, TreeMapPanel.

Windows 7 e o controle Ribbon do Office

Um novo controle Ribbon do WPF estará disponível para download logo após o lançamento do WPF 4. Este controle possui skins para o Windows 7 e o Office, bem como todas as características da faixa (Ribbon) padrão que os usuários finais estão familiarizados, incluindo as guias (tabs) e grupos, redimensionamento dinâmico, barra de ferramentas de acesso rápido, menu de aplicações, guias contextuais, dicas importantes e mais.

imagem

O contrle Ribbon do WPF será totalmente extensível para atender aos novos direcionamentos de lançamentos futuros. A CTP (Community Technology Preview) com um conjunto limitado de funcionalidades já está disponível aqui.

GRÁFICOS

Composição Cacheada

Ganhos de performance massivos são possíveis com o novo recurso de Composição Cacheada no WPF 4, que permite que as aplicações façam cache de conteúdo arbitrário incluindo controles ativos e totalmente interativos, geometria vetorial, etc como bitmaps que persistem na memória de vídeo. Uma vez cacheados, esses elementos podem ser arbitrariamente transformados, animados, manipulados, e podem ter efeitos aplicados, tudo sem ter que re-renderizar o elemento presente no cache. 

Isto poupa tanto da CPU como da GPU o custo de reprocessamento do conteúdo, e ao invés disso permite que a GPU processe diretamente a partir do cache. O(s) cache(s) tem noção de regiões sujas, assim um cursor piscando em um textblock (bloco de texto) cacheado, por exemplo, só terá que re-renderizar o cursor entre os frames (quadros). Há até um pincel novo, que usa especificamente esses caches inteligentes - efetivamente um VisualBrush com desempenho muito melhor.

Suporte ao Pixel Shader 3

O WPF 4 baseia-se no suporte muito popular do ShaderEffect que foi introduzido pela primeira vez com o WPF 3.5 SP1, permitindo que os aplicativos agora escrevam Effects usando o Pixel Shader versão 3.0. O PS Shader Model 3.0 é significativamente mais sofisticado que o PS 2.0, permitindo efeitos ainda mais atraentes no hardware suportado.

LayoutRounding

O WPF 4 adota a propriedade UseLayoutRounding, originalmente introduzida na Silverlight 2. O motor de layout do WPF freqüentemente calcula as coordenadas de posicionamento de sub-pixel. Isso pode levar à renderização de artefatos porque elementos posicionados em limites de sub-pixel são suavizados (anti-aliased) sobre vários pixels físicos.

UseLayoutRounding forçará o motor de layout a colocar elementos em todos os limites do pixel, eliminando assim a maioria dos problemas de renderização causados por este problema - o que gera uma interface de usuário (UI) mais limpa e mais nítida por padrão.

imagem Animação Easing Function

Animações discretas, lineares e spline foram suportadas em versões anteriores do WPF. O WPF 4 introduz um novo conceito de funções de atenuação - que permite aos autores de aplicação criar o comportamento de fluidos utilizando animações. Isso pode ser usado em uma infinidade de formas, como a criação de um comportamento elástico, ou a adição de antecipação a uma animação. Funções de atenuação customizam a maneira pela qual as animações progridem do começo ao fim.  A funções de atenuação que acompanham o WPF oferecem uma gama de comportamentos, tais como circular, exponencial, elástico, e progresso de animação flexível. O projeto de extensibilidade também permite que os autores de aplicação criem funções de atenuação personalizadas para definir a maneira com qual suas animações progridem. Com este recurso fácil de usar, os designers podem facilmente criar animações flexíveis e orgânicas.

CleartypeHint

O nova propriedade CleartypeHint anexada permite aos autores de aplicação habilitar a renderização de texto ClearType de maior qualidade em muitas situações onde ela seria desativada. Tais situações incluem texto em janelas em camadas, texto em VisualBrushes, DrawingBrushes, BitmapCacheBrushes, e em qualquer outro lugar onde a introdução de um alvo de renderização intermediário teria resultado anteriormente na renderização de texto em tons de cinza.

TEXTO

Nova Pilha para Renderização de Texto

A pilha de processamento de texto do WPF foi completamente substituída - uma mudança que traz consigo melhorias significativas para a clareza do processamento de texto, configuração e suporte a idiomas internacionais. A nova pilha de texto agora suporta o layout de caracter otimizado para o monitor, para produzir texto com a nitidez comparável ao texto win32/GDI:

imagem

A nova pilha de texto do WPF agora também suporta explicitamente a seleção de modos de renderização suavizados (aliased), em tons de cinza, ou ClearType:

imagem

A nova pilha de texto permite a otimização de texto no que diz respeito a hinting (processo para otimização da rasterização de vetores) e snapping (ajuste automático do texto) tanto para texto animado quanto para texto estático. Além disso, a nova pilha de texto agora suporta fontes com bitmaps incorporados. Isso permite que muitas fontes do Leste Asiático sejam renderizadas com a nitidez que os usuários do Win32 estão acostumados.

BindableRun

Desde o lançamento inicial do WPF, Run.Text tem sido uma propriedade normal da CLR. Isto significa que Run.Text não possui todos os benefícios do sistema de dependência de propriedades do WPF, mais notavelmente a capacidade de ser ligada. No WPF 4, nós convertemos Run.Text para uma propriedade de dependência, permitindo aos desenvolvedores usar a primeira propriedade Run do WPF que permite ser ligada/vinculada a dados.  Mais detalhes podem ser encontrados aqui.

Dicionários Personalizados

O WPF inclui um corretor ortográfico que antes do WPF 4 usava somente o dicionário fornecido pelo sistema operacional para validação da entrada de dados. Esta tem sido uma questão importante para aplicativos que têm como alvo as indústrias específicas com terminologia especializada, tendo em vista que tais aplicações eram inundadas por notificações de erro de ortografia. O WPF 4 introduziu uma API para permitir que uma aplicação adicione palavras aos dicionários utilizados pelo WPF para verificação ortográfica.  Mais detalhes podem ser encontrados aqui.

Seleção e Caret Brush

Em um esforço para permitir uma personalização rica do look and feel das aplicações do WPF, os desenvolvedores também podem agora mudar o pincel usado para pintar a seleção de texto do WPF e o cursor do teclado através de duas propriedades simples: SelectionBrush e CaretBrush:

imagem        imagem

imagem WINDOWS 7

Suporte a Multitoque do Windows 7

Com a introdução do suporte para o multitoque de entrada e processamento de manipulação, o WPF 4 proporciona uma ótima maneira de dar um toque especial às suas aplicações cliente no Windows 7. A entrada através de múltiplos dedos é exposta por meio de eventos de entrada novos e já existentes no WPF 4, enquanto novos eventos de manipulação e inércia estão agora disponíveis para os desenvolvedores usarem. Os novos recursos incluem:

  • Eventos de manipulação Multitoque, Inércia (Pan, Zoom, Rotação) no UIElement
  • Eventos de multitoque Raw (Para cima, Movimento, Para baixo) em UIElement, UIElement3D e ContentElement
  • Múltipla captura suportando múltiplos controles ativos
  • Aprimoramento ScrollViewer para suportar multi-toque panning
  • Extensibilidade para dispositivos que suportam toques
  • Compatibilidade futura para o SDK do Surface

Integração com o Shell do Windows 7

O WPF 4 também expõe várias funcionalidades novas e "chaves" para o Shell do Windows 7 para os desenvolvedores do WPF. Estas características do Shell permitem uma experiência do usário mais rica e integrada. A nova barra de tarefas (taskbar) é menos confusa e pode conter mais informações em um dado instante. As miniaturas do Aero suportam comandos do usuário. As Jump lists fornecem acesso a tarefas de inicialização contextuais e a arquivos disponíveis para a aplicação.

O WPF 4 integra a funcionalidade de Jump lists do Windows 7, incluindo: imagem

  • Tarefas
  • Itens
  • Integração com listas Recentes e Freqüentes
  • Categorias Personalizadas

Integração com a barra de tarefas do Windows 7, incluindo:

  • Barra de Progresso
  • Sobreposição de ícones
  • Botões de thumbnail, com suporte a comandos
  • Texto de Descrição DWM
  • Exibição de Miniaturas das janelas abertas

No Windows 7, a barra de tarefas foi redesenhada para ser menos confusa e para ajudar os usuários a executar tarefas com menos cliques. O WPF 4 provê integração com a barra de tarefas do Windows 7 em XAML, permitindo que as aplicações mostrem informações úteis para o usuário através do ícone da aplicação presente na barra de tarefas através da sobreposições de ícone, barra de progresso, barras de miniaturas (thumbnails), texto de descrição em miniatura e thumbnail clipping (pequena visualização do conteúdo da janela).

Há também uma nova classe TaskbarItemInfo no WPF 4 que é exposta como uma propriedade de dependência.  Esta engloba todas as novas funcionalidades da barra de tarefas introduzidas no Windows 7.

imagem Sobreposições de Ícone (Icon Overlays)

Sobreposições de ícones permitem que uma aplicação comunique determinadas notificações e status para o usuário através de seu botão da barra de tarefas através da exibição de pequenas sobreposições que aparecem no canto inferior direito do botão.

Barras de Progresso

Um botão da barra de tarefas pode ser usado para exibir informações sobre o progresso para o usuário sem que o usuário tenha que mudar para a janela da aplicação. Barras de progresso podem ser usadas para verificar as cópias de arquivos, downloads, instalações, gravação de dados, ou qualquer outra operação que leverá um período de tempo.

Barras de ferramentas em Thumbnail (miniatura)

Barras de ferramentas em miniatura provêem acesso aos principais comandos de uma aplicação sem que o usuário tenha que restaurar ou ativar a janela. Este recurso permite que os autores de aplicações incorporem um controle ativo de barra de ferramentas no preview de uma miniatura da janela. O aplicativo pode mostrar, ativar, desativar ou ocultar os botões da barra de ferramentas em miniatura como exigido pelo seu estado atual:

 imagem

Conceitos Básicos do WPF

Novo Motor para parseamento de XAML/BAML

O WPF 4 substituiu sua implementação de XamlReader.Load(), carregamento BAML e a funcionalidade de Controles e DataTemplates com um novo motor construído em cima da nova dll System.Xaml.dll.  Como parte deste esforço, nós corrigimos muitos erros e fizemos muitas melhorias no que diz respeito às funcionalidades. Usuários de XamlReader.Load()podem tirar vantagem de vários novos recursos da linguagem em XAML2009 como suporte a tipos genéricos. MarkupExtensions e TypeConverters podem agora obter mais serviços durante a criação do gráfico do objeto, permitindo mais cenários, tais como o acesso ao objeto Raiz. Ferramentas para analisar e manipular XAML também serão muito mais fáceis de criar com muitas das novas APIs fornecidas em System.Xaml.dll.

Suporte à Vinculação de Dados para DLR

Ao contrário de classes CLR, os membros dos objetos dinâmicos são definidos no tempo de execução. DynamicObject é uma nova classe abstrata no .NET Framework 4 que permite aos desenvolvedores implementar facilmente IDynamicMetaObjectProvider. Com o novo suporte à DLR da linguagem C# com a keyword 'dynamic', nós esperamos que algumas implementações de bibliotecas passem a usar DynamicObject e IDynamicMetaObjectProvider como uma forma padrão de expor propriedades e membros dos objetos definidos no tempo de execução. O suporte à vinculação de dados do WPF 4 para IDynamicMetaObjectProvider permitirá o uso da sintaxe natural de propriedade para acessar propriedades dinâmicas.

Este recurso estende o motor de vinculação de dados do WPF para mapear a sintaxe de vinculação de dados de propriedades e indexadores de acesso para que estes suportem o acesso aos membros dinâmicos oferecidos por IDynamicMetaObjectProvider.

Gerenciador de Estado Visual - Visual State Manager (VSM)

Outro novo recurso de apoio à continuidade WPF-Silverlight é o VisualStateManager, que introduz uma nova forma simples de aplicar estados visuais em controles. Este mecanismo oferece uma maneira de personalizar facilmente a aparência de um controle, fornecendo os meios para mapear a lógica do controle para os seus respectivos estados visuais de início e fim.

imagem

O VSM é muito flexível na medida em que gera automaticamente as animações de transição entre os respectivos estados, de modo que o autor do controle gasta menos tempo escrevendo código e mais tempo com os estados visuais que são definidos em um modelo de controle. Isso significa que o VSM pode dar a um autor de controle a capacidade de trocar facilmente a aparência dos controles, e o VSM dá ao autor uma forma de trocar facilmente como um controle responde visualmente à interação do usuário.  Isso é totalmente suportado com o Expression Blend.

Interoperabilidade de Script HTML-XBAP

O WPF 4 fornece os meios de comunicação direta entre um XBAP e um script na página HTML que contém o código (onde o XBAP é carregado em um frame HTML ou elemento IFRAME). O XBAP pode ter acesso abrangente ao DOM do HTML, incluindo quaisquer controles ActiveX embutidos na página HTML que contém o código, inclusive manipulação de eventos DOM.

O WPF expõe o objeto de script principal a partir do frame que contém o cógigo. Este é um objeto dinâmico que representa o objeto da janela do frame incluindo quaisquer funções customizadas em scripts e variáveis globais a partir do script na página HTML. A partir dele, uma aplicação pode invocar funções de script diretamente usando a notação "dot into" no DOM do HTML. A funcionalidade está disponível em XBAPs com nível de confiança parcial e em todas as versões suportadas do Internet Explorer e Firefox.

Virtualização da Automação de UI (UIAutomation)

O WPF introduziu controles virtuais em versões passadas, porém nunca houve uma maneira padronizada para um cliente de automatização interagir com um controle virtual. Dois padrões de controle, ItemsContainerPattern e VirtualizedItemPattern, foram adicionados no WPF 4 para apoiar o acesso e interação com elementos virtuais. ItemsContainerPattern é usado para acessar os controles virtuais e encontrar itens virtualizados e VirtualizedItemPattern é usado para tornar real itens virtuais.

SynchronizedInput Pattern

Este é um outro padrão de controle para UIA acrescentado no WPF 4. Este padrão pode ser usado por clientes de automação para verificar se o evento de entrada de dados é roteado para o elemento correto através do framework do WPF. Este padrão tem três eventos de automação associados que são InputReachedTargetEvent, InputReachedOtherElementEvent e InputDiscardedEvent para indicar onde a entrada é tratada.

Instalação/Implantação no Cliente

.NET Framework 4 Client Profile (Perfil do Cliente)

Para melhorar o tamanho da instalação, o tempo e a experiência geral do processo de instalação do .NET Framework 4, existe agora uma versão mais compacta do .NET que é um subconjunto do .NET Framework 4 completo - chamada de .NET Framework 4 Cliente Profile. O tamanho atual do arquivo redistribuível do .NET Framework 4 Client Profile é de cerca de 30MB. O Microsoft .NET Framework 4 completo é um super conjunto puro da versão Client Profile.

O objetivo do .NET Framework 4 Client Profile é melhorar e ajudar a simplificar o tamanho da instalação, o tempo, a confiabilidade e a experiência geral de implantação de aplicações cliente. A versão Client Profile contém as funcionalidades que a maioria das aplicações cliente comuns para desktop (incluindo aplicações Windows Forms e WPF) precisariam, e por isso, é esperado que a maioria dos desenvolvedores de aplicações cliente a tenham como alvo ao invés da versão completa do .NET Framework 4. Por esta razão, a maior parte dos templates de projetos para aplicações clientes do Visual Studio 2010 Beta 2 têm como alvo o .NET Framework 4 Beta 2 Client Profile por padrão.

Ao contrário do. NET Framework 3.5 SP1 Cliente Profile, uma melhoria importante no .NET Framework 4 Cliente Profile é o seu suporte a todas as plataformas e sistemas operacionais, incluindo aqueles suportados pelo Framework completo como o Windows Vista, Windows XP, Windows Servers 2003 e 2008, Windows 7, todos tanto para x86 e x64. 

Você pode visualizar ou alterar a versão do framework que você tem como alvo abrindo a janela de propriedades do seu projeto, e em seguida, selecione a página Application "Aplicação". Você pode então mudar o "framework a ser utilizado" usando a combobox, para usar ou o .NET Framework completo ou o .NET Client Profile.  A página de propriedade Publish (Publicar) do projeto também permite que você selecione os pré-requisitos necessários para sua instalação ClickOnce. No Beta2, o VS2010 seleciona automaticamente o perfil correto (Client Profile ou completo), dependendo do alvo do projeto principal:

imagem

A mesma janela de pré-requisitos mostrada acima aparece quando você cria projetos de “Setup and Deployment” (Instalação e Implantação) (no menu "Add New Project" / "Outher Project Types"). A entrada de pré-requisito do .NET4 Client Profile é marcada por padrão neste caso.

Melhorias no NET4 Client Profile vs .NET 3.5 SP1 Client Profile

Embora o conceito de um perfil do cliente não seja novo e foi introduzido no .NET Framework 3.5 SP1, o .NET Framework 4 Client Profile contém várias melhorias importantes:

 

.NET Framework Client Profile 4 (NOVO)

.NET Framework 3.5 SP1 Client Profile

Sistemas Operacionais suportados

Suportado em todas as plataformas e sistemas operacionais que são suportados pelo. NET Framework (excluindo IA64 e o Server Core role no W2K8)

Suportado apenas em máquinas com Windows XP 32-bit que não possuem nenhum .NET Framework instalado.

(o Client Profile instala silenciosamente a versão completa do Framework 3.5 SP1 caso contrário)

Redistribuível

Suporta redistribuição, assim como download através da web

Suporta somente download via web

Entradas em Adicionar Remover Programas

O Framework completo inclui o Client Profile e outra parte chamada de "Extended" (Extendida). Assim, ele tem duas entradas na janela de diálogo Adicionar / Remover Programas (ou janela Programas e Recursos).

Se você instalou o Framework completo, você pode mudar para o Client Profile simplesmente removendo a entrada "Extended" em Adicionar / Remover Programas.

Única entrada em Adicionar Remover programas

Visual Studio

Suporte mlhorado para Client Profile no Visual Studio 2010.

Por padrão muitos projetos de aplicação cliente do Visual Studio 2010 Beta2 têm como alvo o NET4 Client Profile

Único checkbox no Visual Studio 2008 Service Pack 1 na página de propriedades "Application" do Projeto para projetos do .NET Framework 3.5. Suporte ao Client Profile não disponível no VS 2008 sem service pack.

Recursos

Inclui novos recursos do .NET 4 (como Managed Extensibility Framework (MEF), C# 4 Dynamic Keyword, etc), bem como recursos previamente incluídos no NET 3.5 SP1 completo (Reconhecimento de Voz, Verificador de Ortografia para WPF , etc)

Subconjunto de recursos no .NET 3.5 SP1 completo

Em virtude do .NET 4.0 ser um lançamento lado-a-lado no que diz repeito às versões anteriores do .NET Framework, a instalação do .NET Framework 4.0 não requer que as versões anteriores do .NET na máquina precisem ser reparadas / corrigidas através de patches.  Isto significa que o .NET 4.0 Client Profile é instalado muito mais rápido em uma máquina do que o .NET 3.5 SP1 Client Profile.

Implantação de XBAP Full Trust (XBAP com Nível de Confiança Total)

A partir do WPF 4, o prompt de elevação do ClickOnce também é habilitado para aplicações XAML que rodam no browser (XBAPs) na Intranet e Zonas Confiáveis, tornando mais fácil de implantar XBAPs que possuem nível de confiança total. Para XBAPs que exigem permissões de segurança maior do que o mínimo de segurança do conjunto de permissões de acesso ao código (CAS) da Intranet e Zonas Confiáveis, o usuário poderá clicar em 'Executar' no prompt de elevação ClickOnce quando navegar para o XBAP para permitir que o XBAP seja executado com as permissões solicitadas.

Resumo

Como você pode ver acima - há muitas e excelentes novas funcionalidades que estão chegando com o WPF 4.0.  A seguir estão alguns links e recursos que você pode acompanhar para aprender mais sobre algumas destas funcionalidades:

Vou escrever mais posts nos próximos meses, que também destacarão alguns dos novos recursos do WPF 4 e como tirar proveito deles.  Eu também vou fazer outro post em breve que tratará sobre o novo designer do WPF e da Silverlight do VS 2010 - o qual torna possível construir ótimas aplicações WPF e Silverlight usando um designer WYSIWYG diretamente no Visual Studio 2010.

Espero que ajude,

Scott


Texto traduzido do post original por Leniel Macaferi.

 

Published Tuesday, October 27, 2009 1:11 AM by Leniel Macaferi

Comments

No Comments