WPF ProgressBar不更新?

时间:2011-04-12 08:43:31

标签: c# .net data-binding progress-bar

我正在尝试使用数据绑定来更新我的进度条。 XAML文件包含进度条:

<ProgressBar Height="23" Name="progressBar" VerticalAlignment="Bottom" Margin="207,444,0,0" Minimum="0" Maximum="{Binding ProgressBarMax}" Value="{Binding ProgressBarValue}" />

我的相关C#类包含getter&amp;设定器:

    private int progressBarMax;
    public int ProgressBarMax
    {
        get 
        {
            if (this.progressBarMax == 0)
                this.progressBarMax = 1;
            return this.progressBarMax; 
        }
        set 
        {
            this.progressBarMax = value; 
        }
    }

    private int progressBarValue;
    public int ProgressBarValue
    {
        get 
        { 
            return progressBarValue; 
        }
        set 
        { 
            progressBarValue = value; 
        }
    }

在我的“更新”方法中,正在设置最大值。例如this.progressBarMax = 100;。在循环中,进度条值获取值+ = 1.要查看我使用Application.DoEvents()的更新,稍后我将实现线程。数据绑定必须正确,因为我有其他组件可以正常工作。

那为什么我的进度条没有更新?

感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

您需要实现一种方法,以便在ProgressBarValue更改时通知ProgressBar。看看INotifyPropertyChanged界面。

答案 1 :(得分:1)

INotifyPropertyChanged如何让您的UI控件检测到更新的值?

//丹尼尔

答案 2 :(得分:1)

我希望能够在原帖中添加评论,但我将不得不通过答案文本bax解决有关原始问题的问题。你可以将你的代码作为一个单元发布吗?也就是说,为完成绑定需要添加的所有代码?我无法将所有部分组合在一起为我的进度条执行数据绑定以获得最大值和值,这可能会有所帮助。

答案 3 :(得分:0)

我在代码中发现了错误。不幸的是,我改变了我的私人会员,而不是公共财产。因此,当使用this.ProgressBarValue += 1;代替this.progressBarValue += 1;时,一切正常。