[英]Copying File with Progress Bar in C# WPF
我正在使用以下代碼將文件從一個位置復制到另一個位置
private void CopyFilesRecursivelyy(string serverDirectorty, string localDirectory)
{
foreach (string dirPath in Directory.GetDirectories(serverDirectorty, "*", SearchOption.AllDirectories))
{
Directory.CreateDirectory(dirPath.Replace(serverDirectorty, localDirectory));
}
string[] files = Directory.GetFiles(serverDirectorty, "*.*", SearchOption.AllDirectories);
for (int i = 0; i < files.Length; i++)
{
string newPath = files[i];
File.Copy(newPath, newPath.Replace(serverDirectorty, localDirectory), true);
}
}
下面是我的 XML 代碼:
<ProgressBar Name ="pb" Grid.Column="2" HorizontalAlignment="Center" Height="16" Margin="0,0,0,0" VerticalAlignment="Center" Maximum="{Binding progressMax}" Value="{Binding intProgress}" Width="195" Visibility="{Binding visibilityPrgb}"/>
這是綁定進度條屬性的代碼:
public int intProgress
{
get => _intProgress;
set
{
_intProgress = value;
OnPropertyChanged();
}
}
private int _intProgress;
public int progressMax
{
get => _progressMax;
set
{
_progressMax = value;
OnPropertyChanged();
}
}
private int _progressMax;
public bool visibilityPrgb
{
get => _visibilityPrgb;
set
{
_visibilityPrgb = value;
OnPropertyChanged();
}
}
private bool _visibilityPrgb;
誰能告訴我如何將此進度條與我的上述代碼集成。 我希望進度條從1-100運行,並且在完成文件復制后我想隱藏進度條。
將progressMax
設置為要復制的文件數,然后為每個復制的文件增加intProgress
,例如:
private void CopyFilesRecursivelyy(string serverDirectorty, string localDirectory)
{
foreach (string dirPath in Directory.GetDirectories(serverDirectorty, "*", SearchOption.AllDirectories))
{
Directory.CreateDirectory(dirPath.Replace(serverDirectorty, localDirectory));
}
string[] files = Directory.GetFiles(serverDirectorty, "*.*", SearchOption.AllDirectories);
progressMax = files.Length;
intProgress = 0;
visibilityPrgb = true;
for (int i = 0; i < files.Length; i++)
{
string newPath = files[i];
File.Copy(newPath, newPath.Replace(serverDirectorty, localDirectory), true);
intProgress++;
}
visibilityPrgb = false;
}
還要確保在后台線程上調用CopyFilesRecursivelyy
並使用轉換器將visibilityPrgb
屬性的值轉換為視圖中的Visibility
:
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
</Window.Resources>
...
Visibility="{Binding visibilityPrgb, Converter={StaticResource BooleanToVisibilityConverter}}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.