2010-05-22 80 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「足夠聰明」以某種方式選擇基於項目類型的模板。

回答

相關問題