2010-05-22 52 views
4

在Silverlight中画一个类似于Facebook上的“feed”的列表框。每个项目可以是1)左边图像的状态更新,2)带有标题的照片缩略图,3)YouTube视频,或4)博客条目。每个项目使用不同的模板。你会如何做到这一点?我可以针对ListBox中的不同类型的项目使用不同的模板吗?

我已经计划在我的所有物品类型上实现一个通用界面。这意味着我会传递一个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“足够聪明”以某种方式选择基于项目类型的模板。

回答

相关问题