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 を返すときにも機能します

4

1 に答える 1

0

Web から画像を表示する場合は、最初に画像をダウンロードする必要があります。これは時間がかかるため、リストの問題になる可能性があります。

この質問を見て、それがどのように行われるかを確認してください: wp7 で web から画像を表示する方法は?

画像をパッケージに含めるか、隔離されたストレージにキャッシュすることが可能であれば、それがより良いでしょう!

アップデート:

タイプ「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 に答える