一些背景知识
我注意到设置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>我已经打开了一个issue on CodePlex。isssue有一个附件,它有一个project,用来说明情况。
所以,我的问题是
还有人遇到过这个问题吗?更重要的是,有没有人知道什么变通方法?如何强制对此DataForm进行垃圾回收?
发布于 2010-06-02 21:17:50
事实证明,这个问题并不是DataForm控件所特有的,它实际上是Silverlight4运行时的问题。this thread中更详细地讨论了所有使用DataTemplate的内置控件和用户控件都存在此问题。Tim Heuer ( Silverlight项目经理)对线程进行了响应,并提出了一种可能的解决方法,结果喜忧参半。他确实提到,他们已经有一个修复进入测试,所以希望更新应该是相对较快的发布。
发布于 2010-09-27 03:09:40
仅供参考,对于任何关心这个问题的人...微软发布了对此的修复。
Silverlight 4 Service Release
https://stackoverflow.com/questions/2932287
复制相似问题