Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态创建控件上的PowerShell WPF事件处理程序_Wpf_Powershell_Xaml_Event Handling_Wpf Controls - Fatal编程技术网

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

动态创建控件上的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

我不是一个专业的开发人员,刚开始使用WPF,所以如果我在这段代码中做了一些愚蠢的事情,请保持温和。我以前使用GUI的唯一经验是Microsoft Access VBA。因此,我熟悉控件、事件和事件处理程序的基本概念。但是WPF有点不同。在PowerShell里做

我发现了另外两篇关于在C#中执行此操作的帖子,所以我的问题是,在PowerShell中执行此操作的等效性是什么?(我甚至不确定第二篇文章是否是WPF,但答案似乎与第一篇文章中简单使用control.event+=eventhandler相似)

我已经使用$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
}
这一切都很好。从视觉上看,按钮出现在屏幕上,看起来很正确

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

从我上面链接到的其他帖子中得到线索,我尝试了

$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})