【发布时间】:2010-08-05 09:33:32
【问题描述】:
谁能指出我正确的方向,以获得一些有关在 Powershell 中处理 WPF UI 事件的文档?
我想知道如何在 CheckBox 或 Radio Button 更改时调用函数。
干杯!
本
【问题讨论】:
标签: wpf powershell wpf-controls
谁能指出我正确的方向,以获得一些有关在 Powershell 中处理 WPF UI 事件的文档?
我想知道如何在 CheckBox 或 Radio Button 更改时调用函数。
干杯!
本
【问题讨论】:
标签: wpf powershell wpf-controls
迟到(超过 4 年)。专门针对jpierson 的评论。
但如果有人像我一样通过谷歌搜索 PowerShell WPF 事件处理找到这篇文章,想要获取 Sender 控件 (sender) 和 Event Args (e),方法如下...
C# 版本(非特定模板)
private void Handler(object sender, SomeEventArgs e)
{
//do something with sender and/or e...
}
PowerShell 版本
$WPFControl.Add_Handler({
$sender = $args[0]
$e = $args[1]
#do something with sender and/or e...
})
到一个特定的 MouseWheelHandler 事件处理程序
C# 版本(MouseWheelHandler 事件已绑定到控件)
private void ScrollViewer_PreviewMouseWheel(object sender, MouseWheelEventArgs e)
{
ScrollViewer scv = (ScrollViewer)sender;
//do something with sender and/or e...
}
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...
})
在 PowerShell 中,要获取发送者和事件参数的类型,请使用以下内容
$ScrollViewer.Add_PreviewMouseWheel({
Write-Host $args[0]
Write-Host $args[1]
})
哪个(在上面的例子中)会给你...
System.Windows.Controls.ScrollViewer
System.Windows.Input.MouseWheelEventArgs
【讨论】:
考虑到 WPF 和 PowerShell,请查看 Bernd 的 WPF Linkcollection for PowerShell。您会发现许多有趣的链接对您有所帮助。
考虑到您的问题,只需使用模式
$control.Add_<someevent>({ what to do })
例如,对于按钮,someevent 可能是 Click:
$button.Add_Click({ $global:clicked = $true })
你传入一个处理事件的脚本块。
【讨论】:
好的,这是一个很长的镜头,因为这篇文章是 2015 年的,但我试过了,但它不适合我。 它不会出现错误,但我无权访问发件人属性
Get-Variable -Name Ctrl_* -ValueOnly | Where-Object {$_.Name -match '^btn_[^_]+_Nav_(Previous|Next)$'} | ForEach-Object {
$_.Add_Click({
$sender = [System.Windows.Controls.Button]$args[0]
$sender.Name
})
}
我尝试为 hmi 制作一个通用的导航系统
最好的问候, 理查德
【讨论】: