在Silverlight中绘制一个与Facebook上的“feed”类似的列表框。每个项目可能是1)左侧图像的状态更新,2)具有标题的照片缩略图,3)YouTube视频,或4)博客条目。每个项目使用不同的模板。你将如何做到这一点?
我已经计划了所有项目类型实现一个公共接口。这就意味着我会把一份伊菲迪姆的名单传下去。
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;
之后,我设想列表框“足够聪明”,可以根据项目类型选择模板。