我有一个ListView,它包含多个ListViewItem 每个ListViewItem都包含一个checkBox:
<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
}
谢谢。
答案 0 :(得分:3)
如果没有其他方法,您也可以使用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
}
}
答案 1 :(得分:0)
使用ListViewItem.Content属性
答案 2 :(得分:0)
使所有复选框都具有相同的ID(bcoz是在不同的listitem中)。使用以下代码
foreach(ListViewItem item in listView) {
CheckBox chk=item.FindControl("checkboxid");
}