ganhar 8 metro app c # multiple itemTemplate

Estou trabalhando em um aplicativo do metrô e tenho situação. Em uma das minhas páginas, usei listview com um modelo de item personalizado que exibe uma imagem e seu nome. Agora eu tenho que usar o modelo de 2 itens, se a imagem é vertical, eu tenho que usar outro modelo com maior altura. pode haver 2 modelos diferentes em o listview? Eu devo mudar o template em .cs algo como if the image is horizontal listview.ItemTemplate = 1 else if the image is vertical listvew.ItemTemplate =2 como Posso usar isso?

Primeiro, crie uma class DataTemplateSelector personalizada:

 public class OrientationTemplateSelector : DataTemplateSelector { protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) { // cast item to your custom item class var customItem = item as CustomItem; if (customItem == null) return null; string templateName = String.Empty; if (customItem.Width > customItem.Height { // image is horizontal templateName = "HorizontalItemTemplate"; } else { templateName = "VerticalItemTemplate"; } object template = null; // find template in App.xaml Application.Current.Resources.TryGetValue(templateName, out template); return template as DataTemplate; } } 

Defina seus modelos de item como resources (no meu caso, em App.xaml – certifique-se de procurá-los no lugar certo dentro do seletor de modelos):

         

Adicione o seletor de modelos como recurso também (no nível ListView conforme abaixo ou em qualquer lugar, ou seja, página ou nível de aplicativo):

    

Agora você pode configurá-lo como ItemTemplateSelector para o seu ListView :