2010-08-05 110 views
3

任何人都可以在正確的方向指向我一些有關在Powershell中處理WPF UI事件的文檔嗎?WPF和Powershell - 處理事件

我想知道如何在例如更改複選框或單選按鈕時調用函數。

乾杯!

回答

4

考慮WPF和PowerShell,看看WPF Linkcollection for PowerShell從貝恩德。你會發現很多有趣的鏈接,可以幫助你。

考慮你的問題,只是使用模式

$control.Add_<someevent>({ what to do }) 

例如,someevent可能是Click一個按鈕:

$button.Add_Click({ $global:clicked = $true }) 

你傳入處理該事件一個腳本塊。

+0

你怎麼在事件參數和/或發件人的論點。 – jpierson 2010-08-27 02:01:15

5

晚會(超過4年)。具體處理jpierson的評論。

但如果有人發現了這個帖子,像我一樣,通過谷歌搜索的PowerShell WPF事件處理,希望獲得發件人控制(發件人)&事件參數(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 
+1

我已經在SO和微軟論壇上討論了3周,沒有人能夠給我一個簡單問題的答案,如何在PowerShell中處理事件,並且我認爲它非常簡單。 Thx很多,你永遠不會遲到派對;) – 2015-10-29 01:52:19