WPF 文件信息表

问题描述 投票:0回答:1

我对 C# 和 WPF 比较陌生,我是否在努力获取要显示的文件信息列表。下面是我正在使用的代码。我已经测试过该集合填充了正确的信息,但我只是无法将其显示在表格中。

这是我尝试用来显示集合的 XAML 代码

<ListView Name="lvFiles" ItemsSource="{Binding allFileList}">
    <ListView.View>
        <GridView>
            <GridViewColumn Width="160" Header="File Name" DisplayMemberBinding="{Binding FileName}"/>
            <GridViewColumn Width="160" Header="File Path" DisplayMemberBinding="{Binding FilePath}"/>
            <GridViewColumn Width="160" Header="Date Created" DisplayMemberBinding="{Binding DateCreated}"/>
            <GridViewColumn Width="150" Header="File Size" DisplayMemberBinding="{Binding FileSize}"/>
        </GridView>
    </ListView.View>
</ListView>

这是我用来创建集合的代码隐藏

    public partial class FilePanel : UserControl
    {

        public class FileList
        {
            public string FileName { get; set; }
            public string FilePath { get; set; }
            public string DateCreated { get; set; }
            public string FileSize { get; set; }

            public FileList()
            {
                
            }
        }

        public static class FileSizeFormatter
        {
            static readonly string[] suffixes = { "Bytes", "KB", "MB", "GB", "TB" };

            public static string FormatSize(Int64 bytes)
            {
                int counter = 0;
                decimal number = (decimal)bytes;
                while (Math.Round(number / 1024) >= 1)
                {
                    number = number / 1024;
                    counter++;
                }
                return string.Format("{0:n1}{1}", number, suffixes[counter]);
            }
        }

        public FilePanel()
        {
            InitializeComponent();

            ObservableCollection<FileList> allFileList = new ObservableCollection<FileList>();

            var searchPath = @"C:\Users\";

            FileInfo[] files = new DirectoryInfo(searchPath).GetFiles("*", new EnumerationOptions
            {
                IgnoreInaccessible = true,
                RecurseSubdirectories = true
            });

            foreach (FileInfo file in files)
            {
                var fileSize = FileSizeFormatter.FormatSize(file.Length);
                allFileList.Add(new FileList
                {
                    FileName = file.Name,
                    FilePath = file.DirectoryName,
                    DateCreated = file.CreationTime.ToShortDateString(),
                    FileSize = fileSize
                });
            }

            lvFiles.DataContext = allFileList;

        }
    }

我尝试过 DataContext = this 并将这些信息放入网格而不是列表视图中,但没有显示任何内容。

c# wpf
1个回答
0
投票

必须使用 lvFiles.ItemsSource 而不是 lvFiles.DataContext

© www.soinside.com 2019 - 2024. All rights reserved.