win 8 metro app c#multiple itemTemplate

我在地铁应用程序上工作,我有情况。 在我的一个页面中,我使用listview和一个显示图像及其名称的自定义项目模板。 现在我必须使用2个项目模板,如果图像是垂直的,我必须使用另一个高度更长的模板。 列表视图中可以有2个不同的模板吗? 我必须更改.cs中的模板, if the image is horizontal listview.ItemTemplate = 1 else if the image is vertical listvew.ItemTemplate =2我该如何使用它?

首先创建一个自定义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; } } 

将项目模板定义为资源(​​在我的案例中,在App.xaml – 确保在模板选择器内的正确位置搜索它们):

         

添加模板选择器作为资源(在ListView级别如下或更高的位置,即页面或应用程序级别):

    

现在您可以将它设置为ItemTemplateSelectorListView