C# 如何从WPF中的ListViewItem中获取复选框?

C# 如何从WPF中的ListViewItem中获取复选框?,c#,wpf,listview,checkbox,C#,Wpf,Listview,Checkbox,我有一个包含多个ListViewItem的ListView 每个ListViewItem都包含一个复选框: <ListViewItem> <CheckBox IsChecked="{x:Null}" Name="myCheckBx1"> <StackPanel Margin="10,0,10,0" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAl

我有一个包含多个ListViewItem的ListView 每个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>

谢谢。

使用ListViewItem。内容属性使用ListViewItem。内容属性将所有复选框设置为具有相同id(b位于不同的listitem中)。使用以下代码

foreach(ListViewItem item in listView) {
  CheckBox chk=item.FindControl("checkboxid");
}

使所有复选框具有相同的id(位于不同的listitem中)。使用以下代码

foreach(ListViewItem item in listView) {
  CheckBox chk=item.FindControl("checkboxid");
}

如果没有其他方法,也可以使用LogicalTreeHelper:

<ListView x:Name="list"> ... </ListView>
它返回的值是不可数的。我认为通过执行这段代码,您将获得包含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
    }
}

如果没有其他方法,也可以使用LogicalTreeHelper:

<ListView x:Name="list"> ... </ListView>
它返回的值是不可数的。我认为通过执行这段代码,您将获得包含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
    }
}

如何使用它?我尝试这样做:foreach(listView.Items中的ListViewItem项)var v=item.Content as CheckBox;但是v总是得到空值!如何使用它?我尝试这样做:foreach(listView.Items中的ListViewItem项)var v=item.Content as CheckBox;但是v总是得到空值!在ListViewItem上找不到FindControl()方法?在ListViewItem上找不到FindControl()方法?我做了同样的事情,但在执行foreach(LogicalTreeHelper.GetChildren中的对象列表(listView作为FrameworkElement)){foreach(LogicalTreeHelper.GetChildren中的对象复选框)(作为框架元素列出){CheckBox c=CheckBox as CheckBox;c.IsChecked=true;}}例如,我尝试选中每个复选框,得到了XamlParseException,消息为:无法创建ListViewInstance,因此您在XamlCode中有问题。当您得到XamlParseException时,您总是会得到代码行和代码列。检查您的xaml代码并查找错误。我仔细检查了此解决方案,复制了您的xaml代码并粘贴了它(当然,ListViewItem必须是ListView的childrem,所以我将其添加到您的xaml代码中)。如果出现问题,请粘贴一些代码。我做了同样的事情,但在执行foreach(LogicalTreeHelper.GetChildren中的对象列表)(ListView作为FrameworkElement)){foreach时出错(LogicalTreeHelper.GetChildren中的对象复选框(作为FrameworkElement列出)){checkbox c=checkbox as checkbox;c.IsChecked=true;}}例如,我尝试选中每个复选框,得到了XamlParseException,消息为:无法创建ListViewInstance,因此您在XamlCode中有问题。当您得到XamlParseException时,您总是会得到代码行和代码列。检查您的xaml代码并查找错误。我仔细检查了此解决方案,复制了您的xaml代码并粘贴了它(当然,ListViewItem必须是ListView的childrem,所以我将其添加到您的xaml代码中)。如果出现问题,请粘贴一些代码。为什么要保留所有复选框。?是的,要获取我的列表视图中的所有复选框我想我问了为什么?要获取并计数复选框!是的,我在创建自定义列表视图时使用MVVM为什么要保留所有复选框。?是的,要获取我的列表视图中的所有复选框我想我问为什么?获取并计数复选框!是的,我在创建自定义ListView时使用MVVM