WPF и Powershell - обработка событий - PullRequest
3 голосов
/ 05 августа 2010

Может ли кто-нибудь указать мне правильное направление для получения документации об обработке событий пользовательского интерфейса WPF в Powershell?

Я хочу знать, как, например, вызывать функцию при изменении CheckBox или Radio Button.

Ура! * * 1005

Ben

Ответы [ 2 ]

7 голосов
/ 05 августа 2010

Рассматривая WPF и PowerShell, взгляните на WPF Linkcollection для PowerShell от Bernd. Вы найдете много интересных ссылок, которые вам помогут.

Учитывая вашу проблему, просто используйте шаблон

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

Например, someevent может быть Click для кнопки:

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

Вы передаете блок сценария, который обрабатывает событие.

6 голосов
/ 11 февраля 2015

Опоздал на вечеринку (более 4 лет). Конкретно обращаясь к комментарию jpierson .

Но если кто-то найдет этот пост, как я, через Googling PowerShell WPF для обработки событий, желая получить элемент управления 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
...