用户选择了包含文件的文件夹。我正在制作一个列表视图,显示所选文件夹中的文件。我想显示每个文件包含的内容,但我想在用户从listviewitem检查文件时显示它。我正在使用以下代码:
if (listView1.Items[0].Checked == true)
{
//....
}
为什么不起作用?我应该如何使用来自的数据:
button1.Click(...)
到button2.Click(...)
?
答案 0 :(得分:3)
不确定您正在寻找什么,但有很多方法可以确定检查ListView中的哪些项目:
// This loops through only the checked items in the ListView.
foreach (ListViewItem checkedItem in listView1.CheckedItems) {
// All these ListViewItems are checked, do something...
}
// This loops through all the items in the ListView and tests if each is checked.
foreach (ListViewItem item in listView1.Items) {
if (item.Checked) {
// This ListViewItem is Checked, do something...
}
}
您可以使用ListViewItem类来检查每个所选项目的详细信息。
答案 1 :(得分:1)
您正在捕捉哪个事件?请记住,如果它是ItemCheck
,则如果该项目是已选中/未选中的项目,则无法使用listView1.Item[0].Checked
。您需要使用ItemCheckEventArgs
参数,并使用e.Index
在检查整个listview元素时排除该元素。使用e.NewValue
分别评估引发ItemCheck
事件的项目。
答案 2 :(得分:0)
我会创建一个不错的MVVM设计。 ViewModel将有一个ObservableCollection FileList,其中File将包含您想要的任何信息。这个类还有一个IsFileSelectedUI属性,以便你可以在你的代码中。然后在XAML中很容易:
<ScrollViewer Grid.Column="0" Grid.Row="1" >
<ItemsControl ItemsSource="{Binding FileList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="2">
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsFileSelectedUI , Mode=TwoWay}"/>
<TextBlock Text="{Binding FileName}"/>
</StackPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
然后事情就像:
FileList.Where(文件=&GT; file.IsFileSelectedUI) 等
如果我理解你所说的话:)