WPF图像渲染的性能

时间:2010-08-30 10:43:08

标签: wpf performance

我有一个包含大量Image控件的ListBox。每个映像的源设置为远程服务器上的URI。一次可以看到大约20个图像(面板是VirtualizingStackPanel),每次滚动ListBox时,渲染图像需要几秒钟,导致滚动极其缓慢。图像很小(每个5-7K),不涉及调整大小。

当Source是本地URI时,性能很好。 这些图像由nginx服务器提供,几乎可以立即在浏览器中呈现。

我的问题是:

  1. 有没有更好的方法在WPF中显示这些图像?
  2. 如果这是最好的方法,我应该如何开始追踪瓶颈?
  3. 编辑:

    通过绑定到集合来填充ListBox。这是DataTemplate的XAML设置为ListBox的ItemTemplate:

    <ListBoxItem>
        <StackPanel>
            <TextBlock Text="{Binding Path=Title}" />
            <Image Width="50" Margin="0">
                <Image.Source>
                    <BitmapImage UriSource="{Binding Path=ImageUri}" DecodePixelWidth="50" />
                </Image.Source>
            </Image>                            
        </StackPanel>
    </ListBoxItem>
    

1 个答案:

答案 0 :(得分:0)

尝试绑定ObservableCollection中的图像,这会将ImageSource集合返回到ItemTemplate内的Image。

HTH