Почему не работает WPK DataBinding в PowerShell со свойством TextBox «Текст»? - PullRequest
0 голосов
/ 01 мая 2011

Добрый день.Я хотел бы задать вопрос.Почему элемент управления TextBox "Txt" в этом коде не получает значение свойства объекта $ CounterObject?

New-Grid -Height 150 -Width 200 -Rows 3 {
    New-Label -Name InfoLabel -Row 0 "Some message" 
    New-TextBox -Name Txt -Row 1 -DataBinding @{ Text = New-Binding -Path CounterValue -Mode OneWay}
    New-Button -Name B1 -Row 2 -Width 100 "OK"  
} -DataContext {
    Get-PowerShellDataSource -Script {
    $CounterObject = New-Object -TypeName PSObject -Property @{ CounterValue = "Some Text" }
    ForEach-Object {
        $_.CounterValue 
    }
    } 
} -on_Loaded  {
    Register-PowerShellCommand -Run -Once -ScriptBlock {
     $window.Content.DataContext.Script = $window.Content.DataContext.Script
    }
}  -asjob

1 Ответ

1 голос
/ 20 мая 2011

Если вы посмотрите на выходные данные Get-PowerShellDataSource отдельно, вы увидите, что: 1. Ваш скрипт не работает (нет выходных данных).2. Когда вы исправляете сценарий (см. Ниже), выходные данные можно найти в свойстве «Вывод» (в виде массива).

Так что если вы измените путь привязки данных на «Output [0] .CounterValue», это будет работать.

Вам также не нужен обработчик события onLoaded.

Этот код работает:

New-Grid -Height 150 -Width 200 -Rows 3 {
    New-Label -Name InfoLabel -Row 0 "Some message"
    New-TextBox -Name Txt -Row 1 -DataBinding @{ Text = New-Binding -Path Output[0].CounterValue -Mode OneWay}
    New-Button -Name B1 -Row 2 -Width 100 "OK"
} -DataContext {
    Get-PowerShellDataSource -Script {
        $CounterObject = New-Object -TypeName PSObject -Property @{ CounterValue = "Some Text" }
        Return $CounterObject
    }
} -asjob

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

...