Изобразите список в Silverlight, который похож на «канал» на Facebook.Каждый элемент может представлять собой: 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 будет достаточно умным, чтобы каким-то образом выбрать шаблон на основе типа элемента.