2016-07-28 89 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