我遇到了这个问题,一直在使用caliburn micro,我正在尝试更新我的进度条。但没有发生任何事情。 我已经在这里阅读了几个关于它的线程,我被卡住了,它只是没有更新
你能看到我的代码出了什么问题吗? 我的xaml是这样的:<ProgressBar x:Name="PbEstadoConfig" FlowDirection="LeftToRight" Width="200" Height="30" Margin="6,0,572,0">
在我的视图模型中,我有以下代码:
private double _pbEstadoConfig;
public double PbEstadoConfig
{
get { return _pbEstadoConfig; }
set
{
_pbEstadoConfig = value;
NotifyOfPropertyChange(() => PbEstadoConfig);
}
}
public void Seguinte()
{
var t = Task.Factory.StartNew(() =>ActualizaPB("seguinte"));
}
protected void ActualizaPB(string value){
PbEstadoConfig += 20.0;
}
答案 0 :(得分:1)
我认为您的进度条上可能缺少最大/最小值。
以下是我正在进行的校准微项目中的工作标记,我没有必要编写任何自定义约定
<ProgressBar Name="Progress" Maximum="1" Minimum="0" Margin="0,22,0,0" Grid.Row="1" Height="20" Grid.ColumnSpan="2"></ProgressBar>
支持属性:
public double Progress
{
get { return _progress; }
set
{
_progress = value;
NotifyOfPropertyChange(() => Progress);
}
}
答案 1 :(得分:1)
我对使用Caliburn.Micro提供的WPF MVVM编程的经验是,在长时间运行的例程中,UI线程将被锁定,因此进度条在长时间运行的例程中不会更新,因为它在同一个线程上。因此,我遵循this page from Stephen上的建议,并实现了他的ProgressReporter类以及System.Threading库