第一篇文章。所以首先,感谢多年来我从观望中所获得的所有帮助。我只是有一个非常具体的代码设计问题,我在其他地方找不到。

我有一系列与特定FrameworkElement相关的情节提要,需要在代码中生成,并且我觉得它有些混乱,可能有点慢(这是我尚未测试的)存储带有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个对象?

最佳答案

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

但是,存在长寿命的对象(静态)包含对短寿命的对象(UI元素)的引用的危险,因为这会使它们无法被垃圾回收。

关于c# - 附加依赖项属性与字典-Silverlight,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6057874/

10-12 04:28