绑定多个下载进度

     2023-04-12     235

关键词:

【中文标题】绑定多个下载进度【英文标题】:Binding Multiple Download Progress 【发布时间】:2015-12-16 10:20:02 【问题描述】:

我在 ObservableCollection 中有一个 DownloadOperation 列表,并且该变量具有 Progress.TotalBytesToReceive 和 Progress.BytesReceived 属性。 当我尝试将此属性绑定到进度条的最大值和值时,它给了我绑定表达式错误属性未找到。我绑定了其他属性 ResultFile.Name 并且它成功了。有没有办法解决这个问题?

更新:

我发现我需要从进度中使用转换器来获取总字节值,但现在的问题是该值没有更新,并且似乎 observablecollection 没有观察接收到的字节值。

<ListView   DataContext="Binding Download"
            ItemsSource="Binding">
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                </Style>
            </ListView.ItemContainerStyle>
            <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel Margin="5">
                        <TextBlock Text="Binding ResultFile.Name"
                                   FontSize="20"
                                   Foreground="Black"/>
                        <ProgressBar Maximum="100"
                                     Value="Binding Progress, Converter=StaticResource ByteReceivedConverter"/>
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
 </ListView>

我有这个作为视图模型,activeDownloads 包含可观察下载的列表。

public ObservableCollection<DownloadOperation> activeDownloads = new ObservableCollection<DownloadOperation>();

我尝试在后面的代码中提取 BytesReceived 和 TotalBytesToReceive

        double received = 0;
        double total = 0;
        foreach (var item in activeDownloads)
        
            received += item.Progress.BytesReceived;
            total += item.Progress.TotalBytesToReceive;

        
        if (total != 0)  
        var percentage = received / total * 100;

它可以正常工作,observablecollection 也可以正常工作,当我添加下载时,它会自动更改视图,而无需手动更新数据上下文,如果下载完成/删除,结果相同。但是,如果我直接将 Progress.BytesReceived 绑定到进度条值,它会给我路径错误,但我可以将它绑定到 Progress 属性。所以我做了一个转换器来检索值。

这是我用来转换 Progress 属性的转换器:

public class ByteReceivedConverter:IValueConverter

    public object Convert(object value, Type targetType, object parameter,      string language)
    
        BackgroundDownloadProgress bytes = (BackgroundDownloadProgress)value;
        if (bytes.TotalBytesToReceive != 0)
            return bytes.BytesReceived/bytes.TotalBytesToReceive*100;

        else return 0;
    

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    
        throw new NotImplementedException();
    

是否有可能让这个 DownloadOperation 对字节接收级别具有可观察性?因为我没有创建这个属性,所以我只是从 meta.xml 中检索它。还是我做错了?因为现在我遇到的问题是视图不知道接收到的字节值发生了变化。

如果不可能,我应该制作另一个实施 INotifyPropertyChanged 的​​视图模型吗?

【问题讨论】:

【参考方案1】:

首先,您不需要使用转换器;绑定 Max 和 Value 属性会很好,但您可能没有将源值设为公共属性,或者您在绑定中设置了不正确的路径。

按照您现在的操作方式,每次更新 BytesReceived 时,您都需要为 Progress 属性引发 INotifyPropertyChanged 的​​属性更改事件,因为这是您要绑定的属性。

【讨论】:

谢谢您的回答先生,我刚刚更新了我的查询。我希望它能更清楚地解释我的问题。我检查了 Progress 属性也是公开的元数据,谢谢之前 您的 DownloadOperation 类需要实现 INotifyPropertyChanged 接口,并且当您更新 Progress 属性时,您需要为该属性引发 PropertyChanged 事件。 我无权修改该类,因为它是 Windows.Networking.BackgroundTransfer API 的一部分。有没有可能访问这个类的方法?或者我应该使用 IBackgroundTransferOperation 和 IBackgroundTransferOperationPriority 来创建自己的课程? 最好的办法可能是将 DownloadOperation 对象包装在实现 INotifyPropertyChanged 的​​自定义 ViewModel 类中。 非常感谢您的帮助,我成功地包装了 DownloadOperation 类并在其上实现了 INotifyPropertyChanged,现在它可以工作了。欢呼:D

用一个进度条下载多个文件 java / Android

】用一个进度条下载多个文件java/Android【英文标题】:Downloadmultiplefileswithoneprogressbarjava/Android【发布时间】:2018-06-0923:04:06【问题描述】:我在for()循环的帮助下在AsyncTask中下载多个文件。下面的代码工作正常,但每个下载的文... 查看详情

使用 AFNetworking 计算下载多个文件的总进度

】使用AFNetworking计算下载多个文件的总进度【英文标题】:calculatingtotalprogressofdownloadingmultiplefilewithAFNetworking【发布时间】:2014-09-0713:57:16【问题描述】:我想下载多个文件,然后向用户显示总进度。但问题就在这里,我不知道... 查看详情

Android 下载多个文件并在 ListView 中显示进度

】Android下载多个文件并在ListView中显示进度【英文标题】:AndroidDownloadMultipleFilesandshowprogressinListView【发布时间】:2013-09-1818:28:49【问题描述】:我有N个文件要下载。我想在后台连续下载它们-一个接一个。我想在ListView中显示进... 查看详情

使用一个进度条java/android下载多个文件(代码片段)

我在for()循环的帮助下下载AsyncTask中的多个文件。下面的代码工作正常但每个文件都有自己的单个进度条下载,我只想要一个进度条用于所有下载的文件。//ProgressDialogfordownloadingimages@OverrideprotectedDialogonCreateDialog(intid)switch(id)ca... 查看详情

iOS,Swift:串行下载多个文件并将所有文件的单个进度条显示为一个进度

】iOS,Swift:串行下载多个文件并将所有文件的单个进度条显示为一个进度【英文标题】:iOS,Swift:Downloadmultiplefileseriallyandshowingsingleprogressbarforallfileasaoneprogress【发布时间】:2020-01-2307:25:12【问题描述】:我正在使用我的ios(swift4)... 查看详情

进度条与时间轴绑定显示图片

第一步是下载Bootstrap和Glyphicons库。你可以找到外部引用BootstrapCDN主机上的图标字体文件。我分开这些样式表到不同的文件,同时创建一个新的文档称为styles.css。1234567891011121314<!doctypehtml><htmllang="en-US"><head>  <... 查看详情

在集合视图单元格 Swift 中管理多个进度视图

】在集合视图单元格Swift中管理多个进度视图【英文标题】:ManagemultipleprogressviewincollectionviewcellsSwift【发布时间】:2015-08-0514:13:46【问题描述】:在我的应用程序中,我有一个集合视图,单元格有一个图像和按钮。UIImage代表用... 查看详情

像在 WhatsApp 中一样加载多个图像进度条

】像在WhatsApp中一样加载多个图像进度条【英文标题】:MultipleImagesProgressBarloadingLikeinWhatsApp【发布时间】:2015-08-1711:52:27【问题描述】:我想在上传或下载图像或视频时在WhatsApp中显示多个进度条。以及完成的进度条隐藏进度条... 查看详情

c#绑定datagridview时显示进度条

我datagridview是用Dataset通过表直接绑定的。没有将表通过循环来绑定到datagridview。这个时候进度条怎么真实显示绑定进度dataGridView1.DataSource=mydt;mydt为datatable我是通过表直接绑定,我想在绑定的同时进度条也同时根据比例进行显示... 查看详情

在swift 2中作为一批下载多个文件

】在swift2中作为一批下载多个文件【英文标题】:Downloadingmultiplefilesasonebatchinswift2【发布时间】:2016-05-1709:40:05【问题描述】:我正在尝试下载多个图像,结果是它一个一个地下载,有没有办法将多个文件作为一个下载?我想要... 查看详情

在 UITableviewCell 中显示下载进度

...是iOS开发人员。我想实现这样的功能,在UITableview中显示多个文件,带有文件名、UIProgressView和下载按钮。我想实现如果用户单击下载按钮然后开始下载文件更新该单元格的UIProgressView值,如果我单击另一个单 查看详情

Vuejs 将进度圈与文本活动类绑定

】Vuejs将进度圈与文本活动类绑定【英文标题】:VuejsbindingProgressCirclewithtextactiveclass【发布时间】:2022-01-0823:30:07【问题描述】:我有这个应用程序。我正在尝试在进度%20底部文本编号1时进行(正在分析您的答案)不透明度=0.4;-... 查看详情

element穿梭框transfer与进度条组件绑定(代码片段)

Transfer与进度条组件绑定文章目录Transfer与进度条组件绑定前言一、实现原理二、实现流程三、完整代码总结前言最近做的后台管理系统里使用了Element组件Transfer做了一个工作表,然后加了一个进度条来表示工作进度,我希望能将两... 查看详情

UWP 进度条和绑定

】UWP进度条和绑定【英文标题】:UWPProgressBarandBinding【发布时间】:2017-07-1818:54:20【问题描述】:我在更新ProgressBar时遇到了非常奇怪的情况。基本上,我有SemanticZoom,在ZoomedIn模式下我有ListView。每个ListView都包含ProgressBar。这... 查看详情

ninject之旅之九:ninject上下文绑定(附程序下载)

...在插件模型里,每一个服务类型可以被映射到多个实现,绑定方法不用决定要返回哪个实现。因为kernel应该返回所有的实现。然而,上下文绑定是多个绑定场景,在这个场景里,kernel需要根据给定的条件,在多个提供的类型里选... 查看详情

AFNetworking 2.0 - 在监控进度的同时批量下载图像

...为一个更大的应用程序重写,我正在尝试重构我负责下载多个图像的部分代码。使用我的新代码,我还希望能够监控批量下载的进度,而不是每个单独的图像 查看详情

c#datagridview绑定数据时逐行显示并且有进度条。问题如下:

问题是:在datagridview上绑定数据时,我需要做到有一个进度条提示查询进度(百分比),然后控件上的数据是逐行显示出来的,而不是得到dataset后一次绑定一次性数出来,那样不符合要求,怎么弄?求大神回复。。。可以每次... 查看详情

来自Task的tableview中的JavaFX更新进度条

...述】:我知道Task有一个方法updateProgress,我需要将进度条绑定到任务,但是我不能这样做,因为我没有进度条作为对象。我的程序有一个TableView。一旦用户输入下载url并单击下载在TableView中创建的 查看详情