我可以为ListBox中的不同类型的项目使用不同的模板吗?

时间:2010-05-22 14:13:29

标签: silverlight-3.0 windows-phone-7

在Silverlight中设置一个类似于Facebook上“feed”的列表框。每个项目可能是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足够“聪明”以某种方式根据项目类型选择模板。

1 个答案:

答案 0 :(得分:4)