O primeiro treinamento que realizei no Microsoft Learning foi o curso Clinic 5135 AE: Introduction to Developing with Windows Presentation Foundation and Visual Studio 2005. Basicamente é uma introdução ao Windows Presentation Foundation (WPF), parte integrante do .NET Framework 3.0, mostrando qual a idéia por trás dele, como montar as primeiras aplicações, exemplificando os ganhos e as novas técnicas possíveis dentro desta tecnologia. Segue meu resumo do curso.
Dentre as idéias centrais do WPF estão a possibilidade do designer e do programador trabalharem juntos em um mesmo produto final (separação da interface do usuário das regras de negócio), sem o risco de um atrapalhar o trabalho do outro, bem como a utilização de uma plataforma estável para a criação de aplicações ricas em termos de funcionalidades gráficas ao usuário.
Boa parte dos controles são "lookless", ou seja, não possuem uma aparência intrínseca com poucas possibilidades de alteração além de cores, como ocorre nas aplicações baseadas em WinForms. Além disso, o WPF possui suporte à databinding e eventos, integrando-os a código gerenciado, se for o caso.
As definições de interface são construídas com base em um vocabulário XML denominado XAML (Extensible Application Markup Language). Para brincar com o XML diretamente, você pode baixar gratuitamente o Microsoft® Windows® Software Development Kit for Windows Vista™ and .NET Framework 3.0 Runtime Components, dentro do qual você irá encontrar o XamlPad. Com ele, é possível criar documentos XAML e imediatamente verificar o resultado e os erros encontrados. Claro que esse tipo de atividade fica mais simples com o Visual Studio 2005, mas as vezes é necessário ver para crer.
Outra informação pertinente e bem interessante é a possibilidade de interoperabilidade entre o WPF e aplicações WinForms, Microsoft Foundation Classes (MFC), Active Template Library (ATL), Microsoft DirectX e Microsoft ActiveX. Para colocar conteúdo WPF dentro de aplicações Win32, use a classe HwndSource, que provê um hwnd (lembra?) que contem seu conteúdo WPF. No caminho inverso, para reusar um controle Win32 dentro de uma aplicação WPF, use a classe HwndHost, que é um controle que faz com que o hwnds pareçam conteúdo WPF.
Fiquei bastante impressionado com a apresentação das técnicas para databinding dentro do WPF. Segue abaixo um snippet que pode ser testado no XamlPad:
<StackPanel xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
<StackPanel.Resources>
<XmlDataProvider x:Key="Blog" Source="http://www.microsoft.com/windowsvista/rss.xml" />
<DataTemplate x:Key="ItemTemplate">
<TextBlock Text="{Binding XPath=title}"/>
</DataTemplate>
</StackPanel.Resources>
<Label FontSize="24" FontWeight="Bold" Content="{Binding Source={StaticResource Blog}, XPath=/rss/channel/title}"/>
<Label FontSize="18" FontStyle="Italic" Content="{Binding Source={StaticResource Blog}, XPath=/rss/channel/description}"/>
<DockPanel DataContext="{Binding Source={StaticResource Blog}, XPath=/rss/channel/item}" Height="280">
<ListBox IsSynchronizedWithCurrentItem="True" ItemTemplate="{StaticResource ItemTemplate}" ItemsSource="{Binding}" DockPanel.Dock="Left" Width="300" />
<Frame Source="{Binding XPath=link}" DockPanel.Dock="Right" />
</DockPanel>
</StackPanel>
Bom, é isso. Até a próxima.