在列表框中显示来自服务器的图像

时间:2014-05-06 23:03:11

标签: c# xaml windows-phone-8 data-binding windows-phone

在Windows Phone 8上,我有一个加载用户位置的页面。每个地方都包含名称和图像名称。然后,我在存储中搜索图像并显示它。所有这些都是使用数据绑定在列表框中查看的。我不知道如何在数据绑定中设置图像源。我应该在Place类中创建类型位图的额外变量,还是在字符串图像名称的get中我应该调用返回位图的函数?

以下是Place类:

 class Place
    {
        public string id { get; set; }
        public string user_id { get; set; }
        public string name { get; set; }
        public string radius { get; set; }
        public string longitude { get; set; }
        public string latitude { get; set; }
        public string image { get; set; }
        public string thumbnail { get; set; }


        public async Task<placesobj> getUserPlaces(string userId)
        {
            var pairs = new List<KeyValuePair<string, string>>
            {
               new KeyValuePair<string, string> ("id", userId),
               new KeyValuePair<string, string> ("data", "all_places")
            };

            var serverData = serverConnection.connect("places.php", pairs);

            placesobj json = JsonConvert.DeserializeObject<placesobj>(await serverData);
            if (json  != null)
                return json;
            else
                return null;
        }

        public class placesobj
        {
            public List<Place> places { get; set; }

        }

    }

}

以下是列表框的XAML:

<ListBox Grid.Row="1"  ItemsSource="{Binding places}"  Margin="0,10,0,0" >
                <ListBox.ItemTemplate>
                    <DataTemplate >
                        <StackPanel Margin="10,0,10,8">
                            <StackPanel Orientation="Horizontal" Margin="10,0,10,8">
                                <TextBlock Text="{Binding name}" TextWrapping="Wrap" FontSize="50" />
                                <Image Source="{Binding }"
                            </StackPanel>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

1 个答案:

答案 0 :(得分:0)

试试这个。我想这没关系。这对我有用。 reference

图片来源期待一个uri。所以最好把它作为uri

<Image Source="{Binding Image}"/>

 public Uri Image { get; set; }