簡體   English   中英

獲取帶有可能位置(地址)的Windows Phone自動填充框

[英]getting autocomplete box with possible places (addresses) Windows phone

幾天以來,我在網上搜索解決方案。 我要實現的是一個自動完成搜索框,該搜索框最后為我提供了所搜索地址或地點的經度和緯度。

所以在這里,我確實有我需要的東西,問題是圖像不見了,所以我被卡住了。

  • 我如何將文本框的內容發送到我的位置api url(在我的TextChange事件處理程序中)

  • 我如何在事件處理程序中讀取json響應並將其綁定到我的LisBox項目?

  • 最后一點,我如何獲得所選項目的經度和緯度,以便我可以使用它?

這是事件處理程序和XAML代碼

private void SearchForTerm(object sender, System.Windows.Controls.TextChangedEventArgs e)
    {
        //??
    }

<TextBox 
      Foreground="Gray" 
      Text="Search Location"
      TextWrapping="Wrap" 
      Margin="0,470,0,0" 
      Height="72" 
      VerticalAlignment="Top" 
      AcceptsReturn="True" 
      GotFocus="TextBox_GotFocus"
      LostFocus="TextBox_LostFocus" 
      TextChanged="SearchForTerm"
      />

<ListBox x:Name="Suggestion_listbox" 
         Margin="12,65,0,179">

</ListBox>

多謝。

我認為您可以使用WPToolkit中的AutoCompleteBox,這將非常方便和易於使用。有很多關於此的教程,這里是其中一個

如果您想在每個文本更改事件之后獲得結果,則可以使用具有更改后文本的WebClient調用該Web服務。我不確定該位置api,但這是從OpenWeatherMapAPI獲取當前天氣信息的示例。 您也可以在自己的情況下使用它來獲取數據。

WebClient wc = new WebClient();
wc.DownloadStringCompleted+=wc_DownloadStringCompleted;
wc.DownloadStringAsync(new Uri("http://api.openweathermap.org/data/2.5/weather?q="+location +"&units=metric",UriKind.Absolute));

從Web服務獲得響應后,您可以使用JSON.NET反序列化JSON響應, 並將 JSON響應映射到c#類,您可以使用此Web工具-json2csharp這是我的示例的DownloadStringCompleted事件處理程序。

void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
     if (!string.IsNullOrEmpty(e.Result))
     {
            WeatherData weatherDt = JsonConvert.DeserializeObject<WeatherData>(e.Result);
     }
}

這里WeatherData是該Json響應的根對象。 您可以使用JsonConvert.DeserializeObject(e.Result);將json響應映射到WeatherData對象。

要列出DataBinding,請參閱此問題的解決方案。

並將所選項目作為對象,可以使用Tap事件處理程序。

 private void Suggestion_listbox_Tap(object sender, System.Windows.Input.GestureEventArgs e)
 {
        ListBox list = sender as ListBox;
        ClassName obj = list.SelectedItem as ClassName;
 } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM