gpt4 book ai didi

c# - UWP ProgressBar 和绑定(bind)

转载 作者:太空宇宙 更新时间:2023-11-03 19:48:33 24 4
gpt4 key购买 nike

我在更新 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 已绑定(bind),OK。 完成绑定(bind),OK。 CurrentTime 已绑定(bind),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
}
}

所以,肯定有一些东西需要 setter/getter 。有什么想法吗?

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

最佳答案

When binding Minimum and Maximum values in Extensible Application Markup Language (XAML), declare the Binding for Maximum first. If the Binding for Maximum is declared after Minimum, the bound value for Maximum is ignored and the following situations can occur:

To avoid this behavior, declare the Binding for Maximum first in your Extensible Application Markup Language (XAML).

更多信息,请参见Maximum下的注意属性(property)。

同时绑定(bind) Value属性(property),Binding必须是 TwoWay。所以你可以像下面这样更改你的代码:

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

那么它应该可以工作了。

关于c# - UWP ProgressBar 和绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42497971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com