0

我有一些 json 数据,所以我反序列化它并将数据绑定到列表框以在文本块中显示数据....现在问题是我试图在同一个列表框中添加图像并想要绑定图像源使用反序列化对象的数据

我的意思是图像的链接包含一些文本,这些文本存在于反序列化数据中,这些文本会随着数据的变化而变化......

谁能告诉我如何使用反序列化对象的数据,然后创建一个新字符串来传递图像源以将其绑定到列表框中的图像?

提前致谢...

更新:

这是 xaml 的列表框部分

<ListBox x:Name="listdata" ScrollViewer.VerticalScrollBarVisibility="Visible" ItemsSource="{Binding data}" Height="0" Margin="0,72,0,0">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0" DataContext="{Binding}">
                        <Image Grid.Row="1" Height="50" HorizontalAlignment="Left" Name="image1" Stretch="None" VerticalAlignment="Top" Width="50" Source="{Binding PicLink}" />
                        <TextBlock Height="50" HorizontalAlignment="Left" Margin="12,6,0,0" Name="textBlock1" Text="{Binding name}" VerticalAlignment="Top" Width="Auto" TextAlignment="Center" TextWrapping="Wrap" />
                        <TextBlock Height="Auto" HorizontalAlignment="Left" Margin="6,42,0,0" Name="textBlock3" Text="{Binding timedata}" VerticalAlignment="Top" Width="Auto" MinHeight="0" TextWrapping="Wrap" />
                    </Grid>
                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

这是c#代码的一部分:

public class Datum
    {
        public string timedata { get; set; }
        string part = string.Empty;
        public string parts { get { return part; } set { part = value; } }
        public string name { get; set; }
        public string PicLink { get { return string.Format("google.com/{0}/image",part); } }
    }

一切正常,除了图像.....当我替换 PicLink 以返回静态 url 而不是变量 1 时,图像部分也可以工作

4

1 回答 1

0

如果要显示来自网络的图像,则必须先下载它们。这对于列表来说可能是个问题,因为它很耗时。

看看这个问题,看看它是如何完成的:How to display an image from web in wp7?

如果可以将图像包含到您的包中或以某种方式将它们缓存在隔离存储中,那就更好了!

更新:

您必须将“BitmapImage”类型的属性添加到您的类中。(也许 byte[] 也可以,现在不知道,请尝试一下)比您可以将 DataTemplate 中的 Image 的 ImageSource 绑定到此属性。如果您将此类用于 json 序列化程序,则无关紧要,因为序列化程序只会在反序列化时忽略它。为了更安全,请不要使用“DataMember”属性标记 ist。它可能看起来像:

private string _urlString;
[DataMember]
public string UrlPart
{
    get { return _urlString;}
    set 
    {
        _urlPart = value;
        LoadImage(); // in this function you do the downloading stuff
    }
}

private BitmapImage _itemImage;
public BitmapImage ItemImage
{
    get {return _itemImage;}
    // you can also add a setter if needed
}
于 2012-07-02T13:33:44.473 回答