1

一些背景

我注意到设置 DataForm 的 EditTemplate(来自 Silverlight Toolkit)可能会导致 DataForm 不会被垃圾收集。因此,DataForm 的父控件也不能被垃圾回收,从而导致非常严重的内存泄漏。

这是一些演示此案例的 XAML。

    <toolkit:DataForm HorizontalAlignment="Stretch" Margin="10" VerticalAlignment="Stretch">
        <toolkit:DataForm.EditTemplate>
            <DataTemplate>
                <toolkit:DataField Label="Dummy Binding:">
                    <TextBox Text="{Binding DummyBinding, Mode=TwoWay}" />
                </toolkit:DataField>
            </DataTemplate>
        </toolkit:DataForm.EditTemplate>
    </toolkit:DataForm>

在 CodePlex 上打开了一个问题。该问题有一个附件,其中有一个演示案例的项目。

所以,我的问题是

有没有其他人遇到过这个问题?更重要的是,有人知道任何解决方法吗?如何强制此 DataForm 被垃圾收集?

4

2 回答 2

2

仅供参考,对于任何关心这个问题的人...... MS 发布了一个修复程序。

Silverlight 4 服务版本

于 2010-09-26T19:09:40.000 回答
1

事实证明,这个问题并不是 DataForm 控件特有的,它实际上是 Silverlight 4 运行时的问题。所有使用 DataTemplate 的内置控件和用户控件都存在此问题,如本线程中更详细讨论的那样。Tim Heuer(Silverlight 项目经理)对线程做出响应,并提出了一个可能的解决方法,但结果好坏参半。他确实提到他们已经有一个修复程序进入测试,所以希望更新应该很快发布。

于 2010-06-02T13:17:49.743 回答