当用户在Windows Phone 8中滚动时,一个接一个地在可观察集合中显示图像

时间:2014-06-05 10:21:42

标签: json windows-phone-8

我将一个json数组图像URL添加到一个可观察集合中,我想在页面上显示第一个图像,这样当用户水平滚动时,数组中的下一个或上一个图像将显示在屏幕上。帮助我实现这一目标。

以下是我如何通过json下载图片网址并将其添加到可观察的馆藏

    public event PropertyChangedEventHandler PropertyChanged;
    private ObservableCollection<readPageModel> readPages = new ObservableCollection<readPageModel>();
    public ObservableCollection<readPageModel> Read_Pages
    {
        get
        {
            return readPages;
        }
        set
        {
            readPages = value;
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs("Read_Pages"));
            }
        }
    }

    public void DownloadData()
    {
        WebClient client = new WebClient();
        client.DownloadStringCompleted += client_DownloadStringCompleted;
        client.DownloadStringAsync(new Uri("http://########/mob/ranges/id/3/limit/10/offset/0/r_id/6", UriKind.Absolute));
    }


    private void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        try
        {
            if (!string.IsNullOrEmpty(e.Result))
            {
                string data = e.Result;
                var items = JsonConvert.DeserializeObject<readModel[]>(data);
                foreach (var x in items)
                {
                    Read_Pages.Add(x);
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

2 个答案:

答案 0 :(得分:0)

在此滚动查看器中,您可以在xaml中使用水平方向的堆栈面板。然后从c#代码添加图像控件到此堆栈面板。

答案 1 :(得分:0)

您可以在内容面板中拥有一个图像控件,并在代码下面实现:

public Page()
{
    InitializeComponent();
    GestureListener gestureListener = GestureService.GetGestureListener(ContentPanel);
    gestureListener.DragCompleted += gestureListener_DragCompleted;
//set the initial image to Image control
}

void gestureListener_DragCompleted(object sender, DragCompletedGestureEventArgs e)
{
    // User flicked towards left
    if (e.HorizontalVelocity < 0)
    {
        // Load the next image if Downloaded
    }
    // User flicked towards right
    if (e.HorizontalVelocity > 0)
    {
        // Load the previous image
    }
}

您还需要一个变量来跟踪要加载的图像索引