动态创建的控件上的 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})
我不是专业开发人员,只是开始使用 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})