1

我遇到了这个问题,一直在使用 caliburn micro,我正在尝试更新我的进度条。但什么都没有发生。我在这里阅读了几个关于它的线程,我被卡住了,它只是没有更新

你能看出我的代码有什么问题吗?我的xml是这样的:

<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;

}
4

2 回答 2

1

我对诸如 Caliburn.Micro 提供的 WPF MVVM 编程的经验是,UI 线程将在长时间运行的例程中被锁定,因此进度条在长时间运行的例程中不会更新,因为它位于同一线程上。因此,我遵循了Stephen 在此页面上的建议,并实现了他的 ProgressReporter 类以及 System.Threading 库

于 2012-10-29T20:23:59.013 回答
1

我认为这可能是您的进度条上缺少最大/最小值。

以下是我目前正在处理的 caliburn 微型项目中的工作标记,我不必编写任何自定义约定

    <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);
        }
    }
于 2012-09-14T05:37:45.097 回答