我有一个这样的列表视图:
<ListView Name="FinalListView"
SelectionMode="Multiple"
SelectionChanged="FinalListView_SelectionChanged">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox Tag="{Binding ID}"
IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}}, Path=IsSelected}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name" Width="400"/>
</GridView>
</ListView.View>
</ListView>
正如你可以看到列表视图的每个项目都包含一个复选框,但下面是我的Parallel.Foreach循环,用我的循环迭代并处理这些项目。
请告诉我,如何检查哪个项目,以及未在循环中检查如下:
FinalFileNames - &gt;是收藏品。即列表视图的数据源。
Parallel.ForEach(FinalFileNames,
new ParallelOptions { MaxDegreeOfParallelism = 4 },
path =>
{
-----code ------------
});
});
答案 0 :(得分:0)
查找列表中的已检查项目 有一个布尔属性来绑定复选框,
foreach (TheObjectYouBindedForYourList item in FinalFileNames )
{
if (item.Checked== true)
{
}
}
答案 1 :(得分:0)
您应该将Checked属性添加到FinalFileNames集合中的对象。我看到你已经绑定到XAML中的属性ID和Name,所以我假设这不是原始类型的集合。所以,如果你的班级看起来像这样:
public class FileName
{
public string Name { get; set; }
public int ID { get; set; }
}
向其添加Checked属性
public bool Checked { get; set; }
然后在您的XAML中,您可以添加一个样式,将ListViewItem的IsSelected属性绑定到对象的Checked属性。
<ListView.Resources>
<Style TargetType="ListViewItem">
<Setter Property="IsSelected" Value="{Binding Checked}"/>
</Style>
</ListView.Resources>
现在,只要选择了ListViewItem,就会在FileName对象上设置Checked属性,并且可以在Parallel.ForEach代码中检查它:
Parallel.ForEach(FinalFileNames,
new ParallelOptions { MaxDegreeOfParallelism = 4 },
path =>
{
if (path.Checked)
{
// code
}
});
});