我注意到设置DataForm的DataTemplate(来自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>
我打开了issue on CodePlex。 isssue有一个附件,其中project表明了这种情况。
还有其他人遇到过这个问题吗?更重要的是,有没有人知道任何变通方法?如何强制将此DataForm垃圾收集?
答案 0 :(得分:2)
仅供参考,对于任何关心此问题的人...... MS已经解决了这个问题。
答案 1 :(得分:1)
事实证明,此问题并非特定于DataForm控件,而且它实际上是Silverlight 4运行时的问题。使用DataTemplate的所有内置控件和用户控件都存在此问题,正如this thread中更详细讨论的那样。 Tim Heuer(Silverlight项目经理)对该主题做出了响应,并提出了一种可能的混合结果解决方法。他确实提到他们已经有一个修复程序进入测试,所以希望更新应该很快发布。