André Carlucci

Skeptic .net development

Migrando seu App do Windows Phone para o Windows 8 RC – WrapPanel

Esses dias comecei a portar meu jogo Caça-Palavras do Windows Phone para o novo Windows 8. Essa migração é uma excelente oportunidade para todos os desenvolvedores que já possuem aplicações no Windows Phone Marketplace atingirem um público infinitamente maior.

Lendo o guia oficial da Microsoft, achei que seria bem fácil. Afinal, é só criar um projeto, copiar as classes, modificar uns namespaces, ajustar umas coisinhas e pronto, certo?

Certo nada, o problema é que o tamanho do “ajustar algumas coisinhas” vai ser muito relativo à complexidade de sua aplicação.

No caso do Caça-Palavras estou tendo algumas dificuldades, principalmente por este ser desenvolvido usando o padrão MVVM e com foco na testabilidade. Sendo assim, resolvi postar aqui uma série de posts com os problemas que for encontrando.

Para começar, onde foi parar o WrapPanel?

No Windows Phone eu utilizava um WrapPanel (presente no toolkit) para colocar as letras do grid, mais ou menos desta forma:

[xml]
<ItemsControl ItemsSource=”{Binding Letters}”>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Views:TileView />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
[/xml]

No Windows 8 você utiliza o WrapGrid exatamente da mesma forma, mas este já está na API e não em algum toolkit:

[xml]
<ItemsControl ItemsSource=”{Binding Letters}”>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Views:TileView />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
[/xml]

Lembrando que o WrapGrid só funciona dentro de um ItemPanelTemplate, caso queria usar em outro lugar, o controle é o VariableSizedWrapGrid.