无论如何要扩展Storyboard.Children?

时间:2011-01-29 17:51:21

标签: silverlight animation extension-methods storyboard

有没有办法将Storyboard.Children扩展为.AddRange而不只是.Add

1 个答案:

答案 0 :(得分:4)

使用C# extension methods是提供AddRange方法的便捷方式。请注意,它不会比多次调用Add更快。

以下是一个示例(您可能希望为空值等添加错误检查)。

要使用,您可以:

sb.Children.AddRange(timelineInst1, timelineInst2);

或传递清单。

sb.Children.AddRange(timelineInsts);

其中timelineInst是一个实现IEnuermable<Timeline>的列表。

public static class StoryboardExtensions
{
    public static void AddRange(this TimelineCollection timeline, IEnumerable<Timeline> timelines)
    {
        foreach (Timeline t in timelines)
        {
            timeline.Add(t);
        }
    }

    public static void AddRange(this TimelineCollection timeline, params Timeline[] timelines)
    {
        if (timeline == null || timelines.Length == 0) { return; }
        foreach (Timeline t in timelines)
        {
            timeline.Add(t);
        }

    }
}