如何在WPF中从ListViewItem获取一个复选框?

时间:2013-06-27 08:17:37

标签: c# wpf listview checkbox

我有一个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
}

谢谢。

3 个答案:

答案 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");
}