2

我的 Windows 8 应用程序中有一些DownloadOperation。DownloadOperation 有一个Progress包含Status,TotalBytesToReceive和的属性BytesReceived。我试图将数据绑定到我的 XAML 标记中的那些,但我遇到了一些错误。然后我发现不可能绑定到BackgroundDownlodProgress是的结构。我在网上找到的唯一解决方案是使结构可变,这对我来说是不可能的,因为它不是我的代码。

我试图将 DownloadOperation 包装到一个 Wrapper 类中,该类具有 DownloadOperation.Progress.Status、DownloadOperation.Progress.BytesReceived 和 DownloadOperation.Progress.TotalBytesToReceive 的类属性。

我必须通知系统属性更改才能更新 UI 中的值,通常这是在属性的 setter 方法中完成的。我没有设置器,因为底层结构是只读的。

如何创建与系统定义的不可变结构的 XAML 绑定?

4

1 回答 1

4

DownloadOperation 有一个名为 " AttachAsync" 的方法,它返回一个 " IAsyncOperationWithProgress<DownloadOperation, DownloadOperation>" 类型的对象。您可以使用此返回值添加处理进度事件的方法。每次调用此进度方法时,您都可以通知您的 UI 进度属性已更改。它应该如下所示:

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

免责声明:我没有尝试使用此解决方案运行程序,我只是在搜索文档。如果您对此解决方案有任何问题,请发表评论。

于 2012-11-26T08:20:39.877 回答