0

我有一个 WPF 应用程序,它在从folderbrowserdialog(). 我有一个数据表和一个FILLER()在数据网格中显示子文件的函数。当用户单击按钮时,文件被删除。我的问题是,当我删除这些文件时,我的数据网格不会刷新。我试过DataGrid1.Items.Refresh();了,但我不知道把它放在哪里,它没有奏效。在具有相同代码的 Winforms 中,我没有遇到这个问题。这是我的FILLER()功能:

private void FILLER()
        {
            string[] files = Directory.GetFiles(@PathBox.Text);

            Table = new DataTable();
            DataGrid1.DataContext = null;

            for (int i = 0; i < files.Length; i++)
            {
                if (i == 0)
                {
                    Table.Columns.Add("Name");
                    Table.Columns.Add("Type");
                    Table.Columns.Add("Size");
                }

                FileInfo information = new FileInfo(files[i]);
                FileSystemInfo systemInformation = new FileInfo(files[i]);
                Row = Table.NewRow();
                Row["Name"] = systemInformation.Name;
                Row["Type"] = systemInformation.Extension;
                Row["Size"] = (information.Length / 1024).ToString();
                Table.Rows.Add(Row);


            }
            if (Table.Rows.Count > 0)
            {
                DataGrid1.ItemsSource = Table.DefaultView;

            }
        }

还有我的删除部分:

foreach (string file in files)
                {
                    FileInfo toBeDeleted = new FileInfo(file);
                    if (toBeDeleted.CreationTime < DateTime.Now.AddMilliseconds(-DayValue))
                        toBeDeleted.Delete();
                }

感谢您的建议。

4

3 回答 3

0

您是否在删除该文件时尝试更新项目源?因为刷新只会重新绘制对象。它不会更新项目源。

于 2013-07-24T07:13:32.537 回答
0

好吧,即使刷新项目也不应该更新您的网格视图。您存储在其中的是字符串,而不是实际文件。

如果你想刷新你的gridview,要么重新加载文件(相当昂贵),要么删除属于你删除的文件的字符串

于 2013-07-24T07:16:02.933 回答
0

当您删除文件时,您还必须从 DataTable 中删除该行。否则,您必须通过调用 Filter 方法重新生成 ItemSource。(但这会降低性能)

于 2013-07-24T07:20:45.180 回答