动态创建控件上的PowerShell WPF事件处理程序
我不是一个专业的开发人员,刚开始使用WPF,所以如果我在这段代码中做了一些愚蠢的事情,请保持温和。我以前使用GUI的唯一经验是Microsoft Access VBA。因此,我熟悉控件、事件和事件处理程序的基本概念。但是WPF有点不同。在PowerShell里做 我发现了另外两篇关于在C#中执行此操作的帖子,所以我的问题是,在PowerShell中执行此操作的等效性是什么?(我甚至不确定第二篇文章是否是WPF,但答案似乎与第一篇文章中简单使用control.event+=eventhandler相似) 我已经使用$varname.Add_event({})语法使事件处理程序正常工作。因此,XAML中定义的静态控件的基本事件处理不是问题 这段代码被简化了,但它应该说明这个问题。 我正在代码中动态创建一系列按钮:动态创建控件上的PowerShell WPF事件处理程序,wpf,powershell,xaml,event-handling,wpf-controls,Wpf,Powershell,Xaml,Event Handling,Wpf Controls,我不是一个专业的开发人员,刚开始使用WPF,所以如果我在这段代码中做了一些愚蠢的事情,请保持温和。我以前使用GUI的唯一经验是Microsoft Access VBA。因此,我熟悉控件、事件和事件处理程序的基本概念。但是WPF有点不同。在PowerShell里做 我发现了另外两篇关于在C#中执行此操作的帖子,所以我的问题是,在PowerShell中执行此操作的等效性是什么?(我甚至不确定第二篇文章是否是WPF,但答案似乎与第一篇文章中简单使用control.event+=eventhandler
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
}
这一切都很好。从视觉上看,按钮出现在屏幕上,看起来很正确
但是现在,如何在每个按钮上添加事件处理程序
从我上面链接到的其他帖子中得到线索,我尝试了
$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})