代码之家  ›  专栏  ›  技术社区  ›  Byron Sommardahl

我可以为列表框中的不同类型的项目使用不同的模板吗?

  •  4
  • Byron Sommardahl  · 技术社区  · 16 年前

    在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;
    

    之后,我设想列表框“足够聪明”,可以根据项目类型选择模板。

    1 回复  |  直到 15 年前
        1
  •  4
  •   Byron Sommardahl    16 年前
    推荐文章