使用绑定时的内存使用情况

时间:2011-09-14 09:28:32

标签: c# .net wpf xaml

我创建了两个包含单个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));
}

使用绑定时内存使用情况如何保持不变?

1 个答案:

答案 0 :(得分:0)

我们通过实现自定义 MarkupExtension 解决了这个问题。在应用程序关闭之前,不会对默认的 Binding 进行垃圾回收。