2010-08-05 5 views
3

Quelqu'un peut-il me diriger dans la bonne direction pour obtenir de la documentation sur la gestion des événements d'interface utilisateur de WPF dans Powershell?WPF et Powershell - Gestion des événements

Je veux savoir, par exemple, appeler une fonction quand un CheckBox ou un bouton radio est changé.

À la votre!

Ben

Répondre

4

Considérant WPF et PowerShell, un coup d'oeil à WPF Linkcollection for PowerShell de Bernd. Vous trouverez de nombreux liens intéressants qui vous aideront.

Compte tenu de votre problème, il suffit d'utiliser modèle

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

Par exemple, someevent pourrait être Click pour un bouton:

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

Vous passez dans un scriptblock qui gère l'événement.

+0

Comment obtenez-vous les args d'événements et/ou des arguments de l'expéditeur. – jpierson

5

En fin de soirée (de plus de 4 ans). Spécifiquement adressant le commentaire jpierson.

Mais au cas où quelqu'un trouve ce poste, comme je l'ai fait, via la gestion des événements googler PowerShell WPF, voulant obtenir le contrôle de l'expéditeur (expéditeur) & événement Args (e), voici comment ...

C# Version (modèle non spécifique)

private void Handler(object sender, SomeEventArgs e) 
{ 
    //do something with sender and/or e... 
} 

Version PowerShell

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

Et sur un gestionnaire d'événements MouseWheelHandler spécifique

C# version (où l'événement MouseWheelHandler a été lié à un contrôle)

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

version 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... 
}) 

Dans PowerShell, à obtenir les types d'expéditeur et les arguments d'événement, utilisez les touches suivantes

$ScrollViewer.Add_PreviewMouseWheel({ 
    Write-Host $args[0] 
    Write-Host $args[1] 
}) 

qui (dans l'exemple ci-dessus) vous donnera ...

System.Windows.Controls.ScrollViewer 
System.Windows.Input.MouseWheelEventArgs 
+1

J'ai réservé pendant 3 semaines sur des forums SO et Microsoft, et personne n'est capable de me donner une réponse sur une simple question, comment travailler avec des événements dans PowerShell, et comme je l'ai supposé c'est vraiment facile. Merci beaucoup, vous n'êtes jamais en retard à la fête;) –