我创建了两个包含单个TextBox的简单XAML文件。
第一个模板使用静态文本:
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<TextBox Height="20" Width="120" Text="Static Text" />
</Grid>
</Page>
第二个模板使用Text属性的绑定:
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<TextBox Height="20" Width="120" Text="{Binding Path=Test}" />
</Grid>
</Page>
当我在循环中加载模板时,当我使用带有绑定的模板时,内存使用量会不断增加:
while (true)
{
// Memory usage increases
var binding = Application.LoadComponent(new Uri("/ConsoleApplication1;component/Binding.xaml", UriKind.Relative));
// Memory usage stays constant
//var noBinding = Application.LoadComponent(new Uri("/ConsoleApplication1;component/NoBinding.xaml", UriKind.Relative));
}
使用绑定时内存使用情况如何保持不变?
答案 0 :(得分:0)
我们通过实现自定义 MarkupExtension 解决了这个问题。在应用程序关闭之前,不会对默认的 Binding 进行垃圾回收。