附加依赖属性与字典 - 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元素)的引用存在危险,因为这会阻止它们被垃圾收集。
感谢您的回答Tormod,但是这个问题已经得到解答......我不知道发生了什么事。 – Melodatron 2011-08-01 11:35:00