删除文件后更新DataGrid

时间:2013-07-24 07:07:56

标签: c# wpf datagrid

我有一个WPF应用程序,在从folderbrowserdialog()选择文件夹后,在gridview中显示和删除子文件。我有一个Datatable和一个FILLER()函数来显示datagrid中的子文件。当用户单击按钮时,文件将被删除。我的问题是,当我删除这些文件时,我的数据网格不会刷新。我试过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();
                }

感谢您的建议。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

即使刷新项目也不应更新您的gridview。 你在里面存储的是字符串,而不是实际的文件。

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

答案 2 :(得分:0)

删除文件时,您还必须从DataTable中删除Row。换句话说,您必须通过调用Filter方法重新生成ItemSource。 (但这会降低成本)