附加依赖项属性与字典 - Silverlight
本文关键字:字典 Silverlight 属性 依赖 | 更新日期: 2023-09-27 17:56:50
第一篇文章。 因此,首先,感谢多年来我从场边学到的所有帮助。 我只是有一个相当具体的代码设计问题,我在其他地方找不到。
我有一系列与特定 FrameworkElements 相关的故事板(除其他外),需要在代码中生成,我觉得它要么有点混乱,而且可能有点慢(以为我没有测试过)存储带有 FrameworkElement - 故事板关系的字典,以便即时查找。
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
}
刚刚考虑使用(私有)附加依赖项属性,有没有人对一个是否比另一个更快/更干净有意见? 我认为使用字典的另一个缺点是它们也不能很好地与弱引用一起使用。 不是 C# 大师,我不完全了解这是否会导致垃圾回收出现问题。
另外,我不确定这本词典能有多大。 可能多达 400 个对象甚至更多?
我不会担心字典的内存占用。它们只是参考。
但是,存在长生存期对象(静态)包含对短生存期对象(UI 元素)的引用的危险,因为这可以防止它们被垃圾回收。
我现在使用
UIElements 的 .Resources
属性,而不是使用任何一个,这是一个更合适的位置来存储这些属性。
这个问题以前已经回答过,但是答案似乎已经消失了。 因此,我会将此答案标记为正确的答案,除非原始答案再次出现......