2016-08-04 142 views
0

我有一張圖片幻燈片,當用戶點擊圖片時,如果json中的網址沒有「#」,它將轉到url地址。 JSON: JSON從JSON的點擊幻燈片圖像

XAML:

<Image x:Name="topBanner" Source="images/new (3.0)/banner/MI-W10-banner-1366-01.png" Tapped="topBanner_Tapped" /> 

代碼:

DispatcherTimer playlistTimer1a = null; 
List<string> Images1a = new List<string>(); 

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    ImageSource1a(); 
} 

private async void ImageSource1a() 
     { 
      try 
      { 
       var httpClientHandler = new HttpClientHandler(); 
       httpClientHandler.Credentials = new System.Net.NetworkCredential("username", "password"); 
       var httpClient = new HttpClient(httpClientHandler); 
       string urlPath = "http://"; 
       var values = new List<KeyValuePair<string, string>> 
       { 
        new KeyValuePair<string, string>("platform","win"),  
       }; 
       HttpResponseMessage response = await httpClient.PostAsync(urlPath, new FormUrlEncodedContent(values)); 

       response.EnsureSuccessStatusCode(); 

       string jsonText = await response.Content.ReadAsStringAsync(); 
       JsonObject jsonObject = JsonObject.Parse(jsonText); 
       //JsonObject jsonData1 = jsonObject["data"].GetObject(); 

       JsonArray jsonData1 = jsonObject["data"].GetArray(); 

       foreach (JsonValue groupValue1 in jsonData1) 
       { 

        JsonObject groupObject1 = groupValue1.GetObject(); 

        string image = groupObject1["image"].GetString(); 
        string url = groupObject1["url"].GetString(); 
        Images1a.Add(image); 
       } 


        playlistTimer1a = new DispatcherTimer(); 
        playlistTimer1a.Interval = new TimeSpan(0, 0, 6); 
        playlistTimer1a.Tick += playlistTimer_Tick1a; 
        topBanner.Source = new BitmapImage(new Uri(Images1a[0])); 
        playlistTimer1a.Start(); 
       } 
      } 
      catch (HttpRequestException ex) 
      { 
       RequestException(); 
      } 
     } 

int count1a = 0; 

void playlistTimer_Tick1a(object sender, object e) 
     { 
      if (Images1a != null) 
      { 

       if (count1a < Images1a.Count) 
        count1a++; 

       if (count1a >= Images1a.Count) 
        count1a = 0; 

       ImageRotation1a(); 
      } 
     } 

private async void ImageRotation1a() 
     { 
      OpacityTrans1.Begin(); 
     } 

private void topBanner_Tapped(object sender, TappedRoutedEventArgs e) 
     { 
      //I have to confused to add this code 
      //Can anyone help me to add this code 
     } 

如何,當用戶敲擊的幻燈片圖像,它會去的URL地址在JSON(當地址網址不是'#')?

回答

0

對代碼有很多改進。我建議你多閱讀一下DataBinding和MVVM。

不過,我會盡力幫助你的代碼,因爲-是:

首先,你需要確保你保持距離JSON的所有數據,以便以後可以使用它。

public struct DataItem 
{ 
    public string ImageUrl {get;set;} 
    public string Url {get;set;} 
} 

如然後聲明您的列表:而不是你需要有一個結構,以保持兩個URL圖像的URL列表的

List<DataItem> Images1a = new List<DataItem>(); 

當你建立你的列表,創建DataItem的實例和將它們添加到列表中

foreach (JsonValue groupValue1 in jsonData1) 
{ 

    JsonObject groupObject1 = groupValue1.GetObject(); 

    var dataItem = new DataItem(); 
    dataItem.ImageUrl = groupObject1["image"].GetString(); 
    dataItem.Url = groupObject1["url"].GetString(); 

    Images1a.Add(dataItem); 
} 

最後,當你點擊一個圖像,發現基於索引的網址:

private async void topBanner_Tapped(object sender, TappedRoutedEventArgs e) 
{ 
    var tappedItem = Images1a[count1a]; 
    if (tappedItem.Url != "#") 
    { 
     await Windows.System.Launcher.LaunchUriAsync(new Uri(tappedItem.Url));   
    } 
} 

你可以閱讀更多關於如何從documentation