附加依赖​​属性与字典 - Silverlight

问题描述:

第一篇文章。首先,感谢多年来的所有帮助,正如我从场外学到的。我只是有一个相当具体的代码设计问题,我在别处找不到。附加依赖​​属性与字典 - Silverlight

我有一系列与特定的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#大师,我不完全明白这是否会产生垃圾收集问题。

另外,我不太确定这个字典能得到多大。可能多达400个物体甚至更多?

而不是使用,我现在使用UIElements的.Resources属性,这是一个更合适的地方来存储这些。

此问题已被回答,但答案似乎已消失。因此,我将这个答案标记为正确的一个,除非原来的重新出现......

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

但是,长时间存在的对象(静态)包含对短期对象(UI元素)的引用存在危险,因为这会阻止它们被垃圾收集。

+0

感谢您的回答Tormod,但是这个问题已经得到解答......我不知道发生了什么事。 – Melodatron 2011-08-01 11:35:00