【发布时间】:2020-06-13 23:59:05
【问题描述】:
我不是专业的开发人员,刚开始使用 WPF,所以如果我在这段代码中做一些愚蠢的事情,请小心。我以前使用 GUI 的唯一经验是 Microsoft Access VBA。所以我熟悉控件、事件和事件处理程序的基本概念。但是 WPF 有点不同。并在 PowerShell 中进行。
我发现了另外两篇关于在 C# 中执行此操作的帖子,所以我的问题是,在 PowerShell 中执行此操作的等价物是什么? (我什至不确定第二篇文章是 WPF,但答案似乎与简单使用 control.event += eventhandler 的第一篇文章相似)
adding event handlers on dynamically created WPF controls
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
}
这一切都很好。从视觉上看,按钮出现在屏幕上并且看起来是正确的。
但是现在,如何在每个按钮上添加事件处理程序?
从我尝试过的上面链接的其他帖子中获取线索
$Btn.Add_Click = ({my handler code})
但我收到以下错误:
Exception setting "Add_Click": "Cannot set the Value property for PSMemberInfo object of type
"System.Management.Automation.PSMethod"."
【问题讨论】:
标签: wpf powershell xaml event-handling wpf-controls