如何在WPF中从ListViewItem中获取复选框
本文关键字:获取 复选框 ListViewItem 中从 WPF | 更新日期: 2023-09-27 18:20:08
我有一个ListView,它包含多个ListViewItem每个ListViewItem都包含一个复选框:
<ListViewItem>
<CheckBox IsChecked="{x:Null}" Name="myCheckBx1">
<StackPanel Margin="10,0,10,0" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Stretch">
<TextBlock Text="Airline"></TextBlock>
</StackPanel>
</CheckBox>
</ListViewItem>
<ListViewItem>
<CheckBox IsChecked="{x:Null}" Name="myCheckBx2">
<StackPanel Margin="10,0,10,0" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Stretch">
<TextBlock Text="Fleet"></TextBlock>
</StackPanel>
</CheckBox>
</ListViewItem>
现在在C#上,我想获取ListView中的所有复选框,我该怎么做?我想做以下事情:
foreach(ListViewItem item in listView) {
// Get the checkBox here
}
谢谢。
如果没有其他方法,您也可以使用LogicalTreeHelper:
<ListView x:Name="list"> ... </ListView>
在代码背后:
var ref = LogicalTreeHelper.GetChildren(list);
它返回IEnumerable。我认为通过执行此代码,您将获得包含ListViewItems元素的IEnumerable。因此,对于这个集合中的每个元素,使用相同的模式:
var ref = LogicalTreeHelper.GetChildren(list);
您将得到Checkbox对象。然后,您可以从复选框中获得您想要的每个属性。
示例:
foreach (object listView in LogicalTreeHelper.GetChildren(list as FrameworkElement))
{
foreach (object checkbox in LogicalTreeHelper.GetChildren(obj as FrameworkElement))
{
// Some code
}
}
使用ListViewItem.Content属性
使所有复选框都具有相同的id(bcoz这些复选框在不同的列表项中)。使用以下代码
foreach(ListViewItem item in listView) {
CheckBox chk=item.FindControl("checkboxid");
}