【发布时间】:2019-10-28 20:08:55
【问题描述】:
我创建了包含三列的 ListView (C#-WPF):数字、操作和文件。首先,我向 ListView 添加了几个不同的项目,“数字”随着添加的每个条目而增加,“操作”正在记录到底发生了什么(移动/重命名/删除),“文件”列显示其中文件发生了一个动作。
XAML:
<ListView x:Name="ActionFile" HorizontalAlignment="center" Height="100" VerticalAlignment="bottom" Width="780" Margin="20,0,0,0">
<ListView.View>
<GridView>
<GridViewColumn Header="Number" Width="40" DisplayMemberBinding="{Binding NumberX}"/>
<GridViewColumn Header="Action" Width="200" DisplayMemberBinding="{Binding ActionX}"/>
<GridViewColumn Header="File" Width="350" DisplayMemberBinding="{Binding FileX}"/>
</GridView>
</ListView.View>
</ListView>
C#:
public class FileActionEntry
{
public int NumberX { get; set; }
public string ActionX { get; set; }
public string FileX { get; set; }
}
ActionFile.Items.Add(new FileActionEntry() { NumberX = numValue, ActionX = actionValue, FileX = fileValue });
现在,我正在尝试创建一个 foreach 循环,该循环将检查是否对特定文件执行了特定操作,然后从 ListView 中清除该条目并返回其“数字”值。我有几种不同的方法,但我不知道如何从项目中提取列值。我认为可以通过使用 '.SubItems' 来完成,但它似乎不适用于 WPF。
【问题讨论】:
-
我怀疑 ListView 将
ItemsSource属性绑定到一个列表(或者更确切地说是 ObservableCollection)。在这里你没有那个。在我看来,您可以使用最好的 LINQ 轻松搜索List<FileActionEntry>。