动态创建的控件上的 PowerShell WPF 事件处理程序

PowerShell WPF Event Handler on dynamically created control

我不是专业开发人员,只是开始使用 WPF,所以如果我在这段代码中做了一些愚蠢的事情,请多多包涵。我以前使用 GUI 的唯一经验是 Microsoft Access VBA。所以我熟悉控件和事件以及事件处理程序的基本概念。但是 WPF 有点不同。并在 PowerShell 中执行。

我发现另外两个 post 是关于在 C# 中执行此操作的,所以我的问题是,在 PowerShell 中执行此操作的等效项是什么? (我什至不确定第二个 post 是 WPF,但答案似乎与第一个 post 相似,仅使用 control.event += eventhandler)

Event Handler for a dynamically created control

我的事件处理程序通常使用 $varname.Add_event({}) 语法。因此,XAML 中定义的静态控件的基本事件处理不是问题。

此代码已简化,但应该可以说明问题。 我正在代码中动态创建一系列按钮:

for ($i = 1; $i -le 5; $i++) {    
    $Btn = New-Object System.Windows.Controls.Button
    $Btn.Name = "btn$i"
    $Btn.Content = "Hello World $i"
    $Btn.HorizontalAlignment = "Left"
    $Btn.VerticalAlignment = "Center"
    $Btn.Margin = "10,$($i*50),0,0"
    $Btn.FontWeight = "Bold"
    $WPFgrdMyGrid.Children.Add($Btn) | Out-Null
}

这一切都很好。从视觉上看,按钮出现在屏幕上并且看起来正确。

但是现在,如何在每个按钮上添加事件处理程序?

从我链接到上面的其他 post 中获取线索,我尝试了

$Btn.Add_Click = ({my handler code})

但我收到以下错误:

Exception setting "Add_Click": "Cannot set the Value property for PSMemberInfo object of type
"System.Management.Automation.PSMethod"."

好吧,现在我只是觉得很傻。终于想通了。我与拥有 XAML 预定义控件没什么不同...

$Btn.Add_Click({my handler code})