【问题标题】:Attached Dependency Property vs. Dictionary - Silverlight附加依赖属性与字典 - Silverlight
【发布时间】:2011-05-19 11:24:33
【问题描述】:

第一次发帖。所以首先,感谢多年来我从场边学到的所有帮助。我只是有一个在其他地方找不到的相当具体的代码设计问题。

我有一系列与特定 FrameworkElements 相关的故事板(除其他外),需要在代码中生成,我觉得它要么有点凌乱,而且可能有点慢(以为我没有t 测试)来存储具有 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 个对象甚至更多?

【问题讨论】:

    标签: c# silverlight dependency-properties


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答 Tormod,但是这个问题已经回答了......我不知道它发生了什么。
    【解决方案2】:

    我现在使用 UIElements 的 .Resources 属性而不是使用任何一个,这是一个更适合存储这些的位置。

    这个问题之前已经回答过了,但是答案似乎已经消失了。因此,除非原始答案再次出现,否则我会将这个答案标记为正确答案...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 2015-11-25
      • 2011-08-05
      • 2011-07-23
      • 2011-08-26
      相关资源
      最近更新 更多