我有一个自定义DataTemplate组合框,使用复选框来显示项目。combobox的XAML代码是:
<ComboBox Name="cbMyItems" Grid.Row="1" VerticalAlignment="Center" Height="21" Margin="6,0,10,0" Grid.Column="1" IsEditable="True">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding ischeck}" Content="{Binding name}"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
在Powershell中,我使用以下代码为combobox datatemplate中的复选框设置click事件。
[System.Windows.RoutedEventHandler]$uncheckedHandler = {
}
$cbMyItems.AddHandler([System.Windows.Controls.CheckBox]::ClickEvent, $clickHandler)
处理程序可以成功触发。但我想得到点击的项目对象,然后决定下一步操作。我尝试使用组合框的SelectedItem,但它返回“System.Windows.Controls.ComboBox Items.Count:74”对象,而不是我在命令行中单击的单个项目。
我想为我的组合框实现选择/取消选择所有功能。当我点击“全部”项目时,其他项目将被选中/取消选中。如何在处理程序中获取单击的项目对象?
2条答案
按热度按时间axr492tv1#
您可以像这样获取对checked/unchecked
CheckBox
元素的引用:rxztt3cl2#
在使用带有自定义DataTemplate的ComboBox时,要在处理程序中获取单击的项对象,可以结合使用ComboBox的DropDownClosed事件和SelectedItem属性。以下是如何修改PowerShell代码来实现这一点:
在此代码中,"CheckBox“的"Click”事件处理程序获取单击的“CheckBox”的数据上下文(即数据项)。然后,您可以访问所单击项目的属性(“$itemName”和“$isitemName”)并执行所需的操作。
"ComboBox“的”DropDownClosed“事件处理程序会在ComboBox关闭时捕获所选项目,您可以将此项目作为**$selectedItem**访问,以根据单击的项目执行进一步的操作。