WPF和Powershell - 处理事件

Ben*_*Ben 3 wpf powershell wpf-controls

有人能指出我在Powershell中处理WPF UI事件的一些文档的正确方向吗?

我想知道如何在更改CheckBox或单选按钮时调用函数.

干杯!

ste*_*tej 7

考虑到WPF和PowerShell,请参阅 Bernd的PowerShell的WPF Linkcollection.你会发现许多有用的链接,可以帮助你.

考虑到你的问题,只需使用模式

$control.Add_<someevent>({ what to do })
Run Code Online (Sandbox Code Playgroud)

例如,someevent可以是Click一个Button:

$button.Add_Click({ $global:clicked = $true })
Run Code Online (Sandbox Code Playgroud)

传入处理事件的scriptblock.


Tec*_*pud 7

晚会(超过4年).专门针对jpierson的评论.

但是,如果有人发现这篇文章,就像我一样,通过谷歌搜索PowerShell WPF事件处理,想要获得发件人控件(发件人)和事件Args(e),这里是如何...

C#版本(非特定模板)

private void Handler(object sender, SomeEventArgs e)
{
  //do something with sender and/or e...
}
Run Code Online (Sandbox Code Playgroud)

PowerShell版本

$WPFControl.Add_Handler({
  $sender = $args[0]
  $e      = $args[1]
  #do something with sender and/or e...
})
Run Code Online (Sandbox Code Playgroud)

并在特定的MouseWheelHandler事件处理程序上

C#版本(MouseWheelHandler事件已绑定到控件的位置)

private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
  ScrollViewer scv = (ScrollViewer)sender;
  //do something with sender and/or e...
}
Run Code Online (Sandbox Code Playgroud)

PowerShell版本

$ScrollViewer.Add_PreviewMouseWheel({
  $sender = [System.Windows.Controls.ScrollViewer]$args[0]
  $e      = [System.Windows.Input.MouseWheelEventArgs]$args[1]
  #do something with sender and/or e...
})
Run Code Online (Sandbox Code Playgroud)

在PowerShell中,要获取发件人和事件参数的类型,请使用以下命令

$ScrollViewer.Add_PreviewMouseWheel({
  Write-Host $args[0]
  Write-Host $args[1]
})
Run Code Online (Sandbox Code Playgroud)

哪个(在上面的例子中)会给你......

System.Windows.Controls.ScrollViewer
System.Windows.Input.MouseWheelEventArgs
Run Code Online (Sandbox Code Playgroud)

  • 我已经在 SO 和 Microsoft 论坛上搜索了 3 周,但没有人能够回答我简单的问题,即如何在 PowerShell 中处理事件,而且我认为这非常简单。非常感谢,你参加聚会从来没有迟到过;) (4认同)