Windows phone 7 Как создавать события для обновления пользовательского интерфейса - PullRequest
0 голосов
/ 01 июля 2011

Привет, я создаю приложение, которое при запуске создает запрос HttpWebRequest, получает какой-то XML и помещает его в список. Этот код находится в методе Application_Launching в App.xaml.cs. Этот список затем используется в списке выбора на первой странице приложения.

Однако, поскольку HttpWebRequest выполняется в другом потоке, список не заполняется, когда я назначаю его элементу Listpickers itemSource.

Мне сказали, что у меня должно быть событие, которое срабатывает после заполнения списка, и слушатель на моей первой странице, чтобы заполнить список, когда это произойдет. Как бы я объявил это событие и его слушателя?

Ответы [ 2 ]

0 голосов
/ 01 июля 2011
   public void GetXMLfromServer()
    {
        try
        {
            string url = "";//your url here 
            HttpWebRequest request =
        (HttpWebRequest)HttpWebRequest.Create(new Uri(url));
            request.BeginGetResponse(new AsyncCallback(GetXMLfromServerCompleted),
            request);
        }
        catch (Exception ex)
        {

        }
    }
    private void GetXMLfromServerCompleted(IAsyncResult asynchronousResult)
    {
        try
        {
            string resultString = "";
            HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
            HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
            using (StreamReader streamReader1 = new StreamReader(response.GetResponseStream()))
            {
                resultString = streamReader1.ReadToEnd();
            }
            //**Put your code here to populate the list** 

        }
        catch (Exception ex)
        {

        }
    }
0 голосов
/ 01 июля 2011

Вы можете использовать HttpWebRequest и сделать AsyncCallback или использовать WebClient класс, который имеет событие DownloadStringCompleted. Пример .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...