2014-10-25 2 views
0

WinRT 용 앱을 이전 중입니다. 이전 앱에는 WebClient이 사용되었습니다. 이 WebClient에 의해 데이터 a를 다운로드 한 다음 ui에 바인드합니다. 새로운 앱에서 나는 똑같이하고 싶다. 하지만 내가 찾은 방법은 HttpClient을 사용하는 것입니다.이 방법은 기다려야합니다. 즉, 파일을 다운로드하게하고 다운로드가 완료되기 전에 프로그램이 데이터를 바인딩하고 프로그램 충돌을 시도합니다. 스트림/파일을 동 기적으로 다운로드하는 옵션이 있습니까? 내가 기다려야 할 작업은 동기화 작업과 같고 프로그램/스레드는 완료 될 때까지 "일시 중지"하지만 분명히 그렇지 않습니다.WinRT에서 데이터를 동기식으로 다운로드하는 방법은 무엇입니까?

XAML에서
var result = await ...//download and parse data 
    MyList = result.Items; 

당신이 결합해야합니다

+0

당신은 데이터를 결합하려고하는 코드를 보여 주시겠습니까? 이 작업은 다운로드가 완료되기를 기다린 후에 수행해야합니다. –

+1

언제든지 바인딩 할 수 있으며 업데이트 바인딩에 알릴 필요가 있습니다. – Polhovskiy

답변

1

당신은

private List<string> _myList; 
    public List<string> MyList 
    { 
     get { return _myList; } 
     set 
     { 
      if (Equals(value, _myList)) return; 
      _myList = value; 
      OnPropertyChanged(); 
     } 
    } 

을에서 INotifyPropertyChanged를 구현 그리고 당신은 당신이 이런 식으로 할 필요가 비동기로 데이터를 다운로드 할 때 데이터 모델을 사용할 수 있습니다 나의 목록. 그러면 바인딩 업데이트가 트리거됩니다.

에서 INotifyPropertyChanged 구현은 다음과 같습니다

public event PropertyChangedEventHandler PropertyChanged; 

    [NotifyPropertyChangedInvocator] 
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) 
    { 
     PropertyChangedEventHandler handler = PropertyChanged; 
     if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); 
    } 
관련 문제