我有一个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();
}
感谢您的建议。
答案 0 :(得分:0)
删除该文件时,您是否尝试更新项目来源?因为刷新只会重新绘制对象。它不会更新项目来源。
答案 1 :(得分:0)
即使刷新项目也不应更新您的gridview。 你在里面存储的是字符串,而不是实际的文件。
如果要刷新gridview,请重新加载文件(相当昂贵)或删除属于您删除的文件的字符串
答案 2 :(得分:0)
删除文件时,您还必须从DataTable中删除Row。换句话说,您必须通过调用Filter方法重新生成ItemSource。 (但这会降低成本)