带 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
属性 获取对单击按钮的引用
我创建了一个包含列表框的 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
属性 获取对单击按钮的引用