2016-07-28 3 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(); 

を進行するテキストを追加します。私は、プログレスバーのラベルにコピーされたファイルの割合を示すようにしたいですか?ありがとうございました!

答えて

1

これを行う方法は複数あります。 、

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

最も簡単なのはProgressBarの値を設定するために、あなたのメッセージを示すためにそれからさまざまなプロパティをUserControlを作成し、公開することですMessageプロパティをWindowに設定します。

別のオプションはProgressBarを継承することで、新たなControlを作成し、私はあなたのMessageのより多くのカスタマイズが可能になりますが、行うには多くの作業が必要になると思うそのTemplateを、変更することです。その後

、あなたがこれを行う、別のスレッドからのメッセージを設定する必要がどこに:

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

あなたはプログレスバーの値にテキストブロックのテキストを結合することによって、さらにそれを改善することができ、すなわち、 auburg

+0

私はコードの中でそれを行うことはできますか? xalmでのバインドを使用していません – cptJack44

+0

@ cptJack44 – AnjumSKhan