带 XAML 的 Powershell:处理 ListBox 数据模板中按钮的单击事件

Powershell with XAML: Handle click event of button inside ListBox datatemplate

我创建了一个包含列表框的 XAML 文档。 ListBox.ItemTemplate 的 DataTemplate 包含一个 TextBlock 和一个 Button(为简洁起见省略不相关的属性)

<DataTemplate>
    <TextBlock Text={Binding AppName} />
    <Button Name="btnRefresh" Content="Refresh"/>
</DataTemplate>

我正在使用 Powershell 显示和处理此 XAML。有没有办法从 Powershell 向按钮添加单击事件,因为当我读入 XAML 时 DataTemplate 中的控件没有被枚举,所以我不能简单地引用变量并附加一个 Add_Click它的处理程序:

$reader = (New-Object System.Xml.XmlNodeReader $xaml)
$window = [Windows.Markup.XamlReader]::Load($reader)
$window.FindName("btnRefresh").add_click({...

因此,如果列表框中有很多行,那么在单击按钮时我需要确定单击了哪个按钮。理想情况下,单击事件的 EventArgs 将传递一些与按钮所附加的 ListBoxItem 有关的数据。

只是重申任何解决方案都必须针对 Powershell,而不是 C#。

谢谢

您不需要向 ItemTemplate 中的 Button 添加事件处理程序。您可以处理 ListBox 本身的附加 ButtonBase.Click 事件,例如:

$listBox.AddHandler([System.Windows.Controls.Primitives.ButtonBase]::ClickEvent, 
    $ClickHandler)

在处理程序中,您可以使用 RoutedEventArgs.

OriginalSource 属性 获取对单击按钮的引用