来自XAML的Add_Click函数只分析某些命令?

zzwlnbp8  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(108)

这是一个非常奇怪的问题-我有一些Powershell代码和一个XAML GUI,我用Visual Studio为用户制作了一个相当基本的应用程序。我对Powershell相当有经验,但对XAML完全陌生。
下面是代码片段:
`

$var_RKH.Add_Click({
    $targetSite = $RKH
    $var_TargetSite.Content = "Rock Hill"
})

`
不知何故,在这个单击事件之后,$targetSite仍然是null。我已经确认var $RKH包含了所需的数据。在另一个按钮上的另一个单击事件中,我复制粘贴了同一行,它工作了。然而,让我完全困惑的是-第三行工作了。$var_TargetSite.Content变量被正确地更新了。
因此,click事件肯定是触发了,第二行代码不知何故被完全跳过,第三行代码工作正常。在其他click事件上,完全相同的代码工作正常。我一定是错过了一些非常简单的东西,因为这绝对是扭曲了我的大脑。

tyu7yeag

tyu7yeag1#

脚本块并不是真正的作用域。它们是脚本块,并不继承自封闭作用域。相反,你向它传递值,就像你在C#中为线程传递值一样。这可能会让人困惑,因为作用域和脚本块都有{}分隔符--尽管它们不一样,也不能互换:

[scriptblock]$Sb = {'This is a test'}
if($true) $sb

会掷回ParserError例外状况,而不是输出'this is a test'。
请 * 非常 * 小心“旁载”变量,尤其是使用WPF时;在任何WPF应用程序中都存在高度多线程化,您实际上不知道谁将在何时访问什么。
如果可以,请尝试解析脚本块内的$RKH值,而不是尝试强制它进入。
或者,您可以为XAML实现代码隐藏,并将.xaml和.xaml.cs都放在程序集中,然后在PS中使用它。

相关问题