[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
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.

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.
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:
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:
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:
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:
- 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.
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:

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.
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:
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.