【问题标题】:PowerShell WPF Event Handler on dynamically created control动态创建控件上的 PowerShell WPF 事件处理程序
【发布时间】: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


    【解决方案1】:

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

    $Btn.Add_Click({my handler code})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-03
      • 1970-01-01
      • 2011-01-01
      相关资源
      最近更新 更多