将文本添加到进度条

时间:2016-07-28 06:14:37

标签: wpf

enter image description here

DirectoryInfo dirInfo = new DirectoryInfo(strSource);
    FileInfo[] files = dirInfo.GetFiles();
    pgb.Maximum = files.Length-1;
    Thread thread = new Thread(new ThreadStart(() =>
    {
        for (int n = 0; n < files.Length; n++)
        {
            FileInfo tempfile = files[n];
            string path = System.IO.Path.Combine(strDestination, tempfile.Name);
            tempfile.CopyTo(path, true);
            pgb.Dispatcher.BeginInvoke(new Action<int>((x) => pgb.Value = x), 
                        DispatcherPriority.Background, n);
        } 
    }));
    thread.Start();

我想在进度条的标签上显示复制文件的百分比,其中:

percent = n / pgb.Maximum

任何人都可以帮我吗?谢谢!

1 个答案:

答案 0 :(得分:1)

有多种方法可以做到这一点。

最简单的方法是创建UserControl,并展示其中的各种属性以显示您的消息,设置ProgressBar的值:

<UserControl ...>
    <Grid>        
        <ProgressBar  x:Name="PbControl"/>
        <TextBlock x:Name="TbMessage" Text="... messages goes here ..." HorizontalAlignment="Center" VerticalAlignment="Center"/>
    </Grid>
</UserControl>

UserControl代码后面,

    public ProgressBar ProgressBarControl { get { return PbControl; } }

    string _message;
    public string Message
    {
        get { return _message; }
        set { _message = value; TbMessage.Text = _message; }
    }

只需设置Message的{​​{1}}属性。

另一种选择是通过继承Window来创建新的Control,并更改其ProgressBar,我认为这可以更加自定义Template,但需要还有更多工作要做。

然后,无论您需要从另一个线程设置消息,请执行以下操作:

Message