【问题标题】:Why does not work WPK DataBinding in PowerShell with TextBox "Text" property?为什么在带有 TextBox“Text”属性的 PowerShell 中 WPK DataBinding 不起作用?
【发布时间】:2011-05-01 12:31:26
【问题描述】:

美好的一天。我想问一个问题。 为什么这段代码中的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

【问题讨论】:

    标签: wpf data-binding powershell datacontext wpk


    【解决方案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
    

    希望有帮助!

    【讨论】:

    • 谢谢。我会试试这个。但是我在哪里可以找到有关“输出”变量的信息?官方文档中没有声明这个变量。
    • 最简单的方法可能是只查看 Get-PowerShellDataSource -Script { "Foo" } 的输出。请注意,在这种情况下,脚本块返回“Foo”,并且该值也可以在 Output 属性中找到。可能有更简单/更好的方法来解决这个问题。不幸的是,我知道的 WPK 还不够多。
    • 下午好。事实上,一切正常。谢谢你。请告诉我,您从哪里了解到数组 Output []?在脚本的哪一点以及如何创建对象?
    猜你喜欢
    • 2014-03-31
    • 1970-01-01
    • 2018-12-07
    • 2018-03-21
    • 2011-07-12
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多