美好的一天。我想问一个问题。 为什么TextBox控件“Text”在这段代码中没有收到$ Counter Object对象的属性值?
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
答案 0 :(得分:1)
如果你分别查看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
希望有所帮助!