我目前正在开展一个项目,该项目需要我在状态栏的一个面板中放置一个进度条。有没有人有这方面的经验,或者任何人都可以就如何完成提供任何意见或指导。我一直在寻找 2 天没有运气的解决方案。仍然没有大量的 powershell 帮助,尤其是在 Windows 窗体方面。
问问题
2660 次
1 回答
4
这在 WPK 中使用 PowerShell 数据源相对简单。
您可以将 WPK 作为PowerShellPack的一部分。
这是一个用 WPK 编写的相当不错的进度查看器:
New-Grid -Columns 2 {
New-TextBlock -Margin 10 -TextWrapping Wrap -ZIndex 1 -HorizontalAlignment Left -FontWeight Bold -FontSize 12 -DataBinding @{
"Text" = "LastProgress.Activity"
}
New-TextBlock -Margin 10 -ZIndex 1 -TextWrapping Wrap -Column 1 -VerticalAlignment Bottom -HorizontalAlignment Right -FontStyle Italic -FontSize 12 -DataBinding @{
"Text" = "LastProgress.StatusDescription"
}
New-ProgressBar -ColumnSpan 2 -MinHeight 250 -Name ProgressPercent -DataBinding @{
"Value" = "LastProgress.PercentComplete"
}
} -DataContext {
Get-PowerShellDataSource -Script {
foreach ($n in 1..100) {
Write-Progress "MajorProgress" "MinorProgress" -PercentComplete $n
Start-Sleep -Milliseconds 250
}
}
} -AsJob
PowerShellDataSource 返回一个对象,其中包含给定流的所有输出列表以及在给定流上输出的最后一项(即 Progress 和 LastProgress)。为了显示进度条,我们需要绑定到 LastProgress 属性。
代码的前半部分声明了进度条。通过使用 -DataBinding 参数,TextBlocks 和进度条将自动同步到数据上下文。数据上下文可以在此级别声明(如示例中所示),也可以在父控件中。
此示例中的 DataContext 是一个简单的 PowerShell 脚本,它使用 Write-Progress 每四分之一秒输出一条测试消息,但您可以使用任何您喜欢的脚本。
希望这可以帮助。
于 2009-12-28T21:02:31.697 回答