0

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

谢谢你。

4

3 回答 3

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
    }
}
于 2013-06-27T08:48:15.083 回答
0

使用 ListViewItem.Content 属性

于 2013-06-27T08:23:47.957 回答
0

使您所有的复选框都具有相同的 id(因为它们在不同的列表项中)。使用以下代码

foreach(ListViewItem item in listView) {
  CheckBox chk=item.FindControl("checkboxid");
}
于 2013-06-27T08:38:16.043 回答