我有一个WPF ProgressBar,我在其中设置了Min和Max值。然后我使用DispatcherTimer更新值。我还制作了一个标签,该标签与进入ProgressBar的值绑定的值相同。标签正在流畅地更新(每毫秒)。但是,进度条一次只能更改小块。发生了什么,我怎样才能使增量流畅?
更新:代码请求:
<ProgressBar Minimum="0" Maximum="{Binding XPath=@End}"
Value="{Binding XPath=@Position}" Style="{StaticResource ProgressStyle}" />
...
DispatcherTimer DTimer = new DispatcherTimer();
DTimer.Tick += (s, args) =>
{
var currentposition = Bass.BASS_ChannelGetPosition(stream);
}
DTimer.Interval = new TimeSpan(0, 0, 0, 0, 1);
DTimer.Start();
答案 0 :(得分:0)
您是否尝试异步执行此操作。尝试使用Dispatcher
对象执行以下操作:
public object RunOnUiThread(Delegate method)
{
return Dispatcher.Invoke(DispatcherPriority.Normal, method);
}
...
RunOnUiThread((Action)delegate
{
currentposition = Bass.BASS_ChannelGetPosition(stream);
});
当然,ProgressBar
更新的顺畅程度取决于您从方法返回的值。如果您返回的值每次只增加一个,那么我就看不出任何其他原因导致它不能顺利更新。