1

我有这个 xaml

<ListBox x:Name="listBox"
         ScrollViewer.HorizontalScrollBarVisibility="Auto"
         Tap="listBox_Tap">
  <ListBox.ItemsPanel>
    <ItemsPanelTemplate>
      <StackPanel Orientation="Horizontal" />
    </ItemsPanelTemplate>
  </ListBox.ItemsPanel>
  <ListBox.ItemTemplate>
    <DataTemplate>
      <StackPanel Orientation="Vertical">
        <Image Name="cPix"
               Source="{Binding Image}"
               Stretch="None"
               Margin="0,0,5,5"
               ToolTipService.Placement="Bottom"
               ToolTipService.ToolTip="{Binding Name}" />
        <TextBlock Text="{Binding Name}"
                   HorizontalAlignment="Center"
                   Foreground="Black" />
      </StackPanel>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

这个概念是,我希望列表框延迟加载图像,首先会有一个占位符图像,当图像完成下载时,占位符让位于下载的图像。

有什么帮助吗?

4

1 回答 1

1

你可以在你的ViewModel. 这是一个示例伪代码:

public BitmapImage Image
{
    get
    {
        if (_image == null)
            ImageManager.LoadImageAsync(_imageUri).ContinueWith(t=> Image = t.Result);
        return _image;
    }
    set
    {
        _image = value;
        NotifyPropertyChanged("Image");
    }
}

ImageManager将异步加载图像,无论是从缓存IsolatedStorage还是网络,完成后,它将完成内部Task.

于 2013-04-19T13:08:48.783 回答