2016-07-28 87 views
0

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

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

简单的方法是创建一个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; } 
    } 

刚从Window设置Message财产。

另一种方法是通过继承ProgressBar创建一个新的Control,并改变其Template,我认为允许您Message更多的定制,但需要更多的工作要做。

然后,无论你需要从另一个线程设置消息,这样做:NAME =“TbMessage:

UserControlName.Dispatcher.Invoke(() => { UserControlName.Message = "some text !"; }); 
+0

您可以通过文本块结合到进度条值即 auburg

+0

我可以在代码后面执行它吗?在xalm中不使用绑定 – cptJack44

+0

@ cptJack44可以在代码后面执行任何操作 – AnjumSKhan