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