2012-11-26 52 views
2

我的Windows 8應用程序中有一些DownloadOperation。 DownloadOperation有一個屬性Progress其中包含Status,TotalBytesToReceiveBytesReceived。我試圖將數據綁定到我的XAML標記中,但我得到了some errors。然後我發現綁定到一個結構體是不可能的,該結構體是BackgroundDownlodProgress。 我在網上找到的唯一解決方案是使結構可變,這對我來說是不可能的,因爲它不是我的代碼。XAML綁定到不可變的結構

我試圖將DownloadOperation封裝到一個Wrapper類中,該類具有DownloadOperation.Progress.Status,DownloadOperation.Progress.BytesReceived和DownloadOperation.Progress.TotalBytesToReceive的類屬性。

我將不得不通知系統更改ord中的屬性以更新UI中的值,通常這是在屬性的setter方法中完成的。我沒有setter,因爲底層結構是隻讀的。

如何創建XAML綁定到由系統定義的不可變結構?

回答

4

DownloadOperation有一個名爲「AttachAsync」的方法,它返回一個「IAsyncOperationWithProgress<DownloadOperation, DownloadOperation>」類型的對象。您可以使用此返回值來添加處理進度事件的方法。每次調用此進度方法時,您都可以通知您的用戶界面進度屬性已更改。它應該看起來像這樣:

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

聲明:我沒有嘗試使用此解決方案運行程序,我只是在搜索文檔。如果您對此解決方案有任何疑問,請發表評論。

+0

你太棒了。非常感謝你。 –