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

ファイルを削除するときは、DataTable から行も削除する必要があります。他の方法では、 Filter メソッドを呼び出して ItemSource を再生成する必要があります。(ただし、これはパフォーマンスを犠牲にします)

于 2013-07-24T07:20:45.180 に答える
0

そのファイルを削除するときにアイテム ソースを更新しようとしましたか? リフレッシュは単にオブジェクトを再描画するためです。アイテム ソースは更新されません。

于 2013-07-24T07:13:32.537 に答える