2012-11-26 8 views
2

내 Windows 8 앱에 DownloadOperation이 있습니다. DownloadOperation에는 Status, TotalBytesToReceiveBytesReceived을 포함하는 Progress 속성이 있습니다. 내 XAML 마크 업에있는 데이터 바인딩을 시도했지만, some errors이 있습니다. 그런 다음 구조체에 바인딩하는 것이 불가능하다는 것을 알았습니다.이 구조체는 BackgroundDownlodProgress입니다. 온라인에서 찾은 유일한 해결책은 내 코드가 아니기 때문에 불가능한 구조체를 변경할 수있게하는 것이 었습니다.XAML에서 변경 불가능한 구조체에 바인딩

DownloadOperation을 DownloadOperation.Progress.Status, DownloadOperation.Progress.BytesReceived 및 DownloadOperation.Progress.TotalBytesToReceive에 대한 클래스 속성이있는 래퍼 클래스로 래핑하려고했습니다.

시스템의 값을 업데이트하려면 ord의 속성 변경을 시스템에 통보해야합니다. 일반적으로 속성 'setter 메서드에서이 작업을 수행합니다. 기본 struct가 읽기 전용이기 때문에 나는 setter를 가지고 있지 않다.

시스템에서 정의한 변경 불가능한 구조체에 XAML 바인딩을 만들려면 어떻게해야합니까?

답변

4

DownloadOperation에는 "AttachAsync"이라는 메서드가 있는데이 개체는 "IAsyncOperationWithProgress<DownloadOperation, DownloadOperation>"유형의 개체를 반환합니다. 이 반환 값을 사용하여 진행률 이벤트를 처리하는 메서드를 추가 할 수 있습니다. 이 진행률 메서드가 호출 될 때마다 UI에 진행률 속성이 변경되었음을 알릴 수 있습니다. 그것은 다음과 같아야합니다

var operationWithProgress = download.AttachAsync(); 
operationWithProgress.Progress = (asyncInfo, progressInfo) => { 
    //send notify property changed events 
} 

면책 조항 :이 솔루션을 사용하여 프로그램을 실행하려고하지 않았다, 난 그냥 문서를 검색했다. 이 솔루션에 문제가 있으면 의견을 보내주십시오.

+0

대단하다. 고맙습니다. –

관련 문제