with visual studio samples developing bootstrap apps c# xaml microsoft-metro windows-runtime windows-store-apps

visual - gana la aplicación 8 metro c#multiple itemTemplate



windows apps with javascript (1)

Primero crea una clase personalizada DataTemplateSelector :

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 sus plantillas de elementos como recursos (en mi caso en App.xaml - asegúrese de buscarlos en el lugar correcto dentro del selector de plantillas):

<Application.Resources> <DataTemplate x:Key="HorizontalItemTemplate"> <!-- item template for horizontal image --> </DataTemplate> <DataTemplate x:Key="VerticalItemTemplate"> <!-- item template for vertical image --> </DataTemplate> </Application.Resources>

Agregue también el selector de plantillas como recurso (en el nivel de ListView como se muestra a continuación o en otro lugar superior, es decir, en la página o nivel de aplicación):

<ListView.Resources> <local:OrientationTemplateSelector x:Key="OrientationTemplateSelector" /> </ListView.Resources>

Ahora puede configurarlo como ItemTemplateSelector en su ListView :

<ListView ItemTemplateSelector="{StaticResource OrientationTemplateSelector}" ItemsSource="{Binding CustomItemsList}" />

Estoy trabajando en una aplicación de metro y tengo una situación. En una de mis páginas usé listview con una plantilla de artículo personalizada que muestra una imagen y su nombre. ahora tengo que usar 2 plantillas de elementos si la imagen es vertical. Tengo que usar otra plantilla con mayor altura. ¿Puede haber 2 plantillas diferentes en una lista? Debo cambiar la plantilla en .cs algo así como if the image is horizontal listview.ItemTemplate = 1 else if the image is vertical listvew.ItemTemplate =2 ¿cómo puedo usar esto?