在WPF应用程序中将项添加到C#中的ListView

时间:2015-08-07 16:11:25

标签: c# wpf listview

我想在磁盘上创建文件列表视图,以便在选中时进行进一步处理。所以我创建了一个列表视图,其中包含列文件名,日期和大小。然后我使用以下函数加载listview:

private void Window_Loaded(object sender, RoutedEventArgs e)  
{  
    foreach (string s in Directory.GetLogicalDrives())  
    {  
        filelist.Items.Add(s);   
    }  
}  

这列出了要启动的系统中的驱动器,这很好,但屏幕上显示的是

filename date size  
c:\      c:\  c:\  
d:\      d:\  d:\

所以,我的问题是,如何将子列的日期和大小设置为""" "

1 个答案:

答案 0 :(得分:2)

你似乎有很多需要学习的东西,所以我只会给你一些线索让你开始,因为否则这个答案会太长。

你有3列,每一列都是从同一个对象(字符串)中获取数据。

创建一个新类,用于保存3列的数据:

class Drive
{
    public string Name { get; set; }
    public string Date { get; set; }
    public string Size { get; set; }
}

然后替换它:

foreach (string s in Directory.GetLogicalDrives())  
{  
    filelist.Items.Add(s);   
}

用这个,它将生成数据项:

var drives = Directory.GetLogicalDrives().Select(d => new Drive { Name = d });

foreach (var drive in drives)
{
    MyListView.Items.Add(drive);
}

像这样设置ListView,以便每列从每个项目的属性中获取数据:

<ListView x:Name="MyListView">
    <ListView.View>
        <GridView>
            <GridView.Columns>
                <GridViewColumn Header="filename" DisplayMemberBinding="{Binding Name}"/>
                <GridViewColumn Header="date"  DisplayMemberBinding="{Binding Date}"/>
                <GridViewColumn Header="size"  DisplayMemberBinding="{Binding Size}"/>
            </GridView.Columns>
        </GridView>
    </ListView.View>
</ListView>