C# 如何从WPF中的ListViewItem中获取复选框?
我有一个包含多个ListViewItem的ListView 每个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>
<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