2

我目前正在开展一个项目,该项目需要我在状态栏的一个面板中放置一个进度条。有没有人有这方面的经验,或者任何人都可以就如何完成提供任何意见或指导。我一直在寻找 2 天没有运气的解决方案。仍然没有大量的 powershell 帮助,尤其是在 Windows 窗体方面。

4

1 回答 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 回答