第一篇文章。首先,感谢多年来所有的帮助,因为我从旁观者那里学到了。我只是有一个我在其他地方找不到的特定代码设计问题。
我有一系列与特定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个物体甚至更多?
答案 0 :(得分:0)
我不担心字典的内存占用。它们只是参考。
但是,存在长期存在的对象(静态)包含对短期对象(UI元素)的引用的危险,因为这样可以防止它们被垃圾回收。
答案 1 :(得分:0)
我现在使用UIElements的.Resources
属性,而不是使用其中任何一个,这是一个更适合存储它们的地方。
之前已回答过这个问题,但答案似乎已经消失了。因此,除非原件重新出现,否则我会将此答案标记为正确的答案......