2009-12-24 2 views
2

В настоящее время я работаю над проектом, который требует, чтобы я поставил контрольную панель в одну из панелей панели состояния. Есть ли у кого-нибудь опыт в этом, или кто-нибудь может указать какой-либо вклад или направление того, как это делается. Я искал 2 дня для решения без везения. Там до сих пор нет обилия powershell помочь там, особенно когда дело доходит до форм Windows.Вставьте индикатор прогресса в панель панели состояния с помощью форм powershell и окон

+0

Я могу помочь вам здесь, мне будет несколько дней, чтобы получить время, чтобы просмотреть мои архивы или переделать их. Надеюсь, вы можете подождать ... –

ответ

4

Это относительно просто сделать с источниками данных PowerShell в WPK.

Вы можете получить 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 возвращает объект со списком всех выходов для данного потока и последнего элемента, выведенного на данном потоке (т.е. прогресс и LastProgress). Чтобы отобразить индикатор выполнения, нам нужно привязать свойство LastProgress.

Первая половина кода объявляет индикатор выполнения. Используя параметр -DataBinding, строки TextBlocks и Progress автоматически синхронизируются с контекстом данных. Контекст данных может быть объявлен на этом уровне (как показано в примере) или может находиться в родительском элементе управления.

В этом примере DataContext представляет собой простой сценарий PowerShell, который использует Write-Progress для вывода тестового сообщения каждую четверть секунды, но вы можете использовать любой скрипт, который вам нужен.

Надеюсь, это поможет.

+0

В настоящее время я пытаюсь запустить powershellpack ise и получить ошибку времени выполнения r6034. Попытка проверить вышеописанное исправление, но не может пройти мимо этой проблемы. – stratrider