我有一个绑定到2个整数值的进度条-一个是总秒数,另一个是剩余秒数(在计时器上倒计时:总是<=总秒数)。
我将LayoutRoot datacontext设置为我的顶级对象(其中BlindSet是一个属性-请参阅代码)。
这让我很困惑,所以我把它简化为:
2个文本块和进度条,都绑定到相同的值。datacontext设置得更高,所以它们都是相同的。
要么我做了一些非常愚蠢的事情(可能;)或者是进度条控件中的错误。
<TextBlock Text="{Binding BlindSet.CurrentBlind.SecondsPerBlind}" />
<TextBlock Text="{Binding BlindSet.TimeLeftInCurrentBlind.TotalSeconds}" />
<ProgressBar Minimum="0" Maximum="{Binding BlindSet.CurrentBlind.SecondsPerBlind}" Value="{Binding BlindSet.TimeLeftInCurrentBlind.TotalSeconds}" ToolTipService.ToolTip="{Binding BlindSet.TimeLeftInCurrentBlind.SecondsPerBlind}" />
代码隐藏:
LayoutRoot.DataContext = tournament;
锦标赛有一个BlindSet对象,但我不认为这是问题的一部分,因为其他控件正在更新:
public Blindset BlindSet
{
get { return blindset; }
set
{
if (blindset != value)
{
blindset = value;
OnPropertyChanged("BlindSet");
OnPropertyChanged("CurrentBlind");
}
}
}
更新
:当datacontext更改时,可能有一些内部状态需要使用新的max和value值重新初始化(值非常不同,例如1200秒或120秒)。
当我绑定到一个具有相同值的新BlindSet对象(即1200秒)时,它会按预期工作-所以我想我需要以某种方式让它重新计算大小值的变化-知道怎么做吗?!