UWP 进度条和绑定

Posted

技术标签:

【中文标题】UWP 进度条和绑定【英文标题】:UWP ProgressBar and Binding 【发布时间】:2017-07-18 18:54:20 【问题描述】:

我在更新ProgressBar 时遇到了非常奇怪的情况。 基本上,我有SemanticZoom,在ZoomedIn 模式下我有ListView。每个ListView 都包含ProgressBar。这是最有趣的。

工作(我设定的值):

<ProgressBar Minimum="1488240000" Maximum="1488241000" Value="Binding CurrentTime, Mode=OneWay" />

不工作(值是绑定的):

<ProgressBar Minimum="Binding Start, Mode=OneTime" Maximum="Binding Finish, Mode=OneTime" Value="Binding CurrentTime, Mode=OneWay" />

它的工作方式不是这样: Start 已绑定,OK。 Finish 已绑定,OK。 CurrentTime 已绑定,PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(CurrentTime))) 已触发,但在这里:

public double CurrentTime
    
       get
       
          return currentTime;
          //It's trigged only first time
          //But should be triggered every time PropertyChanged triggered
       

       set
       
          currentTime = value;
          PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(CurrentTime)));
          //It's OK, it's trigged every time I update this property
       
    

所以,肯定有一些事情要做。有什么想法吗?

顺便说一句,当我使用ProgressBar 的属性位置时,我得到了奇怪的结果。例如,如果我设置Minimum,然后Maximum,然后Value 我有ProgressBar 100%。如果我设置ValueMaximumMinimum - 没关系。

【问题讨论】:

【参考方案1】:

在可扩展应用程序标记语言 (XAML) 中绑定 Minimum 和 Maximum 值时,首先为 Maximum 声明 Binding。如果Maximum 的Binding 在Minimum 之后声明,则Maximum 的绑定值将被忽略,可能会出现以下情况:

如果绑定的Minimum 值为负,则Maximum 值设置为0。 如果绑定的Minimum 值大于默认Maximum(Slider 和ProgressBar 为100),则Maximum 值设置为等于Minimum 值。

为避免这种行为,请首先在您的可扩展应用程序标记语言 (XAML) 中为 Maximum 声明 Binding。

有关详细信息,请参阅Maximum 属性下的注意

在绑定Value 属性时,Binding 必须是TwoWay。所以你可以像下面这样改变你的代码:

<ProgressBar Maximum="Binding Finish, Mode=OneTime" Minimum="Binding Start, Mode=OneTime" Value="Binding CurrentTime,Mode=TwoWay" />

那么它应该可以工作了。

【讨论】:

是的,非常完美!谢谢!【参考方案2】:

我认为这会解决它

    <ProgressBar
        Minimum="Binding Min, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged" 
        Maximum="Binding Max, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged" 
        Value="Binding Progress, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged">
    </ProgressBar>

【讨论】:

以上是关于UWP 进度条和绑定的主要内容,如果未能解决你的问题,请参考以下文章

android进度条滑动条和评分控件

IOS Swift中进度条和标签的约束

进度条和 webview 问题

进度条和文件复制问题?

进度条和滑动条

前端上传文件实时显示进度条和上传速度的工作原理是怎样的?