我的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方法中完成的。我没有设置器,因为底层结构是只读的。
如何创建XAML绑定到系统定义的不可变结构?
最佳答案
DownloadOperation有一个称为“ AttachAsync
”的方法,该方法返回类型为“ IAsyncOperationWithProgress<DownloadOperation, DownloadOperation>
”的对象。您可以使用此返回值添加处理进度事件的方法。每次调用此进度方法时,您都可以通知UI进度属性已更改。它看起来应该像这样:
var operationWithProgress = download.AttachAsync();
operationWithProgress.Progress = (asyncInfo, progressInfo) => {
//send notify property changed events
}
免责声明:我没有尝试使用此解决方案运行程序,我只是在搜索文档。如果您对此解决方案有任何疑问,请发表评论。
关于c# - XAML绑定(bind)到不可变的结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13560872/