Conforme a importância tanto do WPF quanto do Silverlight cresce entre os desenvolvedores .NET, a confusão sobre a diferença entre ambos também aumenta. Em julho, a Wintellect lançou um whitepaper pouco conhecido mas incrivelmente importante sobre este tópico e que era intitulado Whitepaper sobre Comparação entre o Microsoft WPF e Silverlight. Recomendamos que desenvolvedores de interfaces gráficos com o usuário leiam as 69 páginas, mas oferecemos um resumo das principais que impactam o negócio destes desenvolvedores.
Propriedades de dependência são componentes-chave para ambas as plataformas, com o PropertyMetadata sendo usado para propriedades de plano de fundo ao invés de campos normais. Enquanto o Silverlight oferece apenas uma classe, o WPF possui alguns sub-tipos.
- UIPropertyMetadata adiciona uma flag que determina "se animações devem ser desabilitadas na propriedade de dependência onde a instância do metadado contido é aplicado."
- FrameworkPropertyMetadata adiciona uma flag para indicar que a propriedade afeta o pipeline, incluindo o posicionamento, medição e renderização do controle. Também pode indicar se o data-binding é permitido na propriedade e qual é seu tipo padrão. Uma vez que o Silverlight não suporta esta classe, todas as ligações de dados são, por padrão, de mão-única.
O Silverlight não suporta o tunelamento de eventos. Ambas as plataformas suportam eventos diretos e "bubbling".
O WPF suporta vários tipos de triggers. Um trigger básico é anexado a uma propriedade de dependência e aplica automaticamente mudanças de estilo quando sua condição é atendida. Além de triggers básicos, o WPF também suporta trigger que respondem a eventos roteados e triggers que funcionam com data-binding. Ao invés de triggers, o Silverlight utiliza uma tecnologia chamada Visual State Manager em seu lugar. O WPF não oferece isso no momento, mas oferecerá na versão 4.0.
O Silverlight suporta apenas algumas extensões de markup. Além das extensões StaticResource compartilhado, Binding e TemplateBinding, o WPF adiciona o DynamicResource, RelativeSource, x:Type, x:Static, and x:Array.
Há inúmeros eventos para teclado e mouse disponíveis apenas no WPF. Como há eventos demais para listar aqui, nós deixamos a listagem para o texto completo do whitepaper.
A classe UIElement e a interface IinputElement. Quando o controle está desabilitado, o WPF utiliza isso para desabilitar todos os controles filhos. O Silverlight não oferece este comportamento, então os desenvolvedores devem conversar com a árvore de controles manualmente.
No lado da comunicação, o WCF no Silverlight está limitado ao BasicHttpBinding e PollingDuplexHttpBinding. O WPF, evidentemente, suporta todas as bindings disponíveis.
Por fim, a funcionalidade de impressão é completamente diferente no WPF em relação ao Silverlight. O WPF permite impressão direta de árvores visuais enquanto o Silverlight se aproveita dos recursos do browser.