0

AutoCompleteBoxサーバーでのリクエストによってアドレスを完成させたい。AutoCompleteBox を埋めるには、次のメソッドがあります。

private async void getNearStreets()
        {
            if (acbAddress.Text.Length > 2)
            {
                ApiRequest request = new ApiRequest("hintAddress", new HintAddress(appSettings.InstanceId, acbAddress.Text, appSettings.SmsCode));
                var postData = JsonConvert.SerializeObject(request);
                var response = await HttpHelper.SendRequestGetResponse(postData);
                ApiResponseTest apiResponse = (ApiResponseTest)JsonConvert.DeserializeObject<ApiResponseTest>(response);
                var wordList = this.Resources["autoCompleteWordList"] as AutoCompleteWordList;
                wordList.Clear();
                foreach (var adresa in apiResponse.data.result)
                {
                    HintAddressResponse adrResponse = (HintAddressResponse)JsonConvert.DeserializeObject<HintAddressResponse>(adresa.ToString());
                    wordList.Add(adrResponse.street);
                }
            }
        }

そして、これは私のクラスです:

public class AutoCompleteWordList : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    private ObservableCollection<string> _listOfAddresses;
    public ObservableCollection<string> ListOfAddresses
    {
        get { return _listOfAddresses; }
        set
        {
            _listOfAddresses = value;
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs("ListOfAddresses"));
        }
    }

    public AutoCompleteWordList()
    {
        ListOfAddresses = new ObservableCollection<string>();
    }

    public void Add(string address)
    {
        ListOfAddresses.Add(address);

    }

    public void Clear()
    {
        ListOfAddresses.Clear();
    }
}

および表示:

<phone:PhoneApplicationPage.Resources>
    <data:AutoCompleteWordList x:Key="autoCompleteWordList" />
</phone:PhoneApplicationPage.Resources>

<toolkit:AutoCompleteBox x:Name="acbAddress" VerticalAlignment="Top"
                             ItemsSource="{Binding Source={StaticResource autoCompleteWordList}, Path=ListOfAddresses}" 
                             TextChanged="acbAddress_TextChanged"/>

私の問題は、データをダウンロードしていて、それらをコレクションに追加したが、DropDownDialog が表示されないことです。新しいデータがあることを警告する必要があると思いますが、方法がわかりません。手伝ってくれてありがとう

4

1 に答える 1

0

msdn を初めて見たとき、PopulateComplete メソッドを見逃していました。しかし、それは私が必要としているものであり、メソッドの最後に追加すると機能します。

于 2013-02-21T16:09:24.577 に答える