附加依赖属性与字典 - Silverlight

时间:2011-05-19 11:24:34

标签: c# silverlight dependency-properties

第一篇文章。首先,感谢多年来所有的帮助,因为我从旁观者那里学到了。我只是有一个我在其他地方找不到的特定代码设计问题。

我有一系列与特定FrameworkElements相关的故事板(其中包括)需要在代码中生成,我觉得它有点乱,可能有点慢(以为我没有'测试)存储具有FrameworkElement - Storyboard关系的字典,以便即时查找。

    private static Dictionary<FrameworkElement, Storyboard> storyboardMapping;

    private void FrameworkElement_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        FrameworkElement fe = sender as FrameworkElement;
        Storyboard sb = null;

        if(storyboardMapping.TryGetValue(fe, out sb))
        {
            sb.Begin();
        }
        // etc
    }

刚刚考虑使用(私有)附加依赖属性,是否有人对是否比另一个更快/更干净有意见?我看到使用词典的另一个缺点是它们也不适用于WeakReferences。不是C#Guru,我不完全理解这是否会产生垃圾收集问题。

另外,我不确定这本词典有多大。可能多达400个物体甚至更多?

2 个答案:

答案 0 :(得分:0)

我不担心字典的内存占用。它们只是参考。

但是,存在长期存在的对象(静态)包含对短期对象(UI元素)的引用的危险,因为这样可以防止它们被垃圾回收。

答案 1 :(得分:0)

我现在使用UIElements的.Resources属性,而不是使用其中任何一个,这是一个更适合存储它们的地方。

之前已回答过这个问题,但答案似乎已经消失了。因此,除非原件重新出现,否则我会将此答案标记为正确的答案......