【问题标题】:UWP ProgressBar and BindingUWP 进度条和绑定
【发布时间】: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 - 没关系。

【问题讨论】:

    标签: c# xaml uwp winrt-xaml inotifypropertychanged


    【解决方案1】:

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

    为避免这种行为,请首先在您的可扩展应用程序标记语言 (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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-01
      • 1970-01-01
      • 2018-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多