我的Windows 8应用中有一些DownloadOperation。 DownloadOperation的属性Progress
包含Status
,TotalBytesToReceive
和BytesReceived
。我尝试将数据绑定到我的XAML标记中的那些,但我得到了some errors。然后我发现绑定到BackgroundDownlodProgress的结构是不可能的。
我在网上找到的唯一解决方案是使结构可变,这对我来说是不可能的,因为它不是我的代码。
我尝试将DownloadOperation包装到一个Wrapper类中,该类具有DownloadOperation.Progress.Status,DownloadOperation.Progress.BytesReceived和DownloadOperation.Progress.TotalBytesToReceive的类属性。
我必须通过系统通知ord中的属性更改来更新UI中的值,通常这是在属性的setter方法中完成的。我没有setter,因为底层结构是只读的。
如何创建与系统定义的不可变结构的XAML绑定?
答案 0 :(得分:4)
DownloadOperation有一个名为“AttachAsync
”的方法,它返回一个类型为“IAsyncOperationWithProgress<DownloadOperation, DownloadOperation>
”的对象。您可以使用此返回值添加处理进度事件的方法。每次调用此进度方法时,您都可以通知UI,进度属性已更改。它应该是这样的:
var operationWithProgress = download.AttachAsync();
operationWithProgress.Progress = (asyncInfo, progressInfo) => {
//send notify property changed events
}
免责声明:我没有尝试使用此解决方案运行程序,我只是在搜索文档。如果您对此解决方案有任何问题,请发表评论。