WPF и Powershell - обработка событий

89
12

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


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


Ура!


Бен

спросил(а) 2021-01-25T17:09:09+03:00 4 месяца, 4 недели назад
1
Решение
118

Поздняя вечеринка (более 4 лет). В частности, обращайтесь к jpierson комментарию.


Но если кто-то найдет этот пост, как и я, через обработку событий WPF в Googling PowerShell, желая получить управление отправителем (отправителем) и Event Args (e), вот как...


Версия С# (неспецифический шаблон)


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


Версия С# (где событие 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

ответил(а) 2021-01-25T17:09:09+03:00 4 месяца, 4 недели назад
108

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


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


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

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


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

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

ответил(а) 2021-01-25T17:09:09+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема