我可以对列表框中不同类型的项目使用不同的模板吗?

问题描述 投票:0回答:1

想象一下 Silverlight 中的一个列表框,类似于 facebook 上的“提要”。每个项目可能是 1) 左侧带有图像的状态更新,2) 带有标题的照片缩略图,3) YouTube 视频,或 4) 博客条目。每个项目使用不同的模板。你会如何实现这个目标?

我计划让我的所有项目类型实现一个通用接口。这意味着我将传入 IFeedItem 列表。

public interface IFeedItem
{
   DateTime Published { get; set; }
   string Owner { get; set; }
   string SourceUrl { get; set; }
}

public class StatusUpdateFeedItem : IFeedItem
{
   DateTime Published { get; set; }
   string Owner { get; set; }
   string SourceUrl { get; set; }
   ... more
}

public class PhotoFeedItem : IFeedItem
{
   DateTime Published { get; set; }
   string Owner { get; set; }
   string SourceUrl { get; set; }
   ... more
}

public class VideoFeedItem : IFeedItem
{
   DateTime Published { get; set; }
   string Owner { get; set; }
   string SourceUrl { get; set; }
   ... more
}

public class BlogEntryFeedItem : IFeedItem
{
   DateTime Published { get; set; }
   string Owner { get; set; }
   string SourceUrl { get; set; }
   ... more
}

//build the list
var list = new List<IFeedItem>
{
    new StatusUpdateFeedItem(),
    new PhotoFeedItem(),
    new VideoFeedItem(),
    new BlogEntryFeedItem()
}

ListBox1.ItemsSource = list;

在那之后,我设想 ListBox 以某种方式“足够智能”,可以根据项目类型选择模板。

silverlight-3.0 windows-phone-7
1个回答
4
投票

我在Link找到了解决这个问题的好方法。

© www.soinside.com 2019 - 2024. All rights reserved.