Windows资源管理器不显示在WPF应用程序中创建的文件夹/文件

时间:2017-07-12 18:53:38

标签: c# wpf windows

所以,我制作了一个小型WPF应用程序,允许您模板文件夹/文件结构并保存/加载它们。

最初安装应用时,它在根安装文件夹中有一个Template文件夹。我开始保存并加载模板(使用SaveFileDialog和OpenFileDialog,然后写入/解析到/从xml)。这很好。

然后我想测试一下,如果我要删除那个文件夹,首先通过这些按钮打开哪个目录(因为即使是在全新安装时它也会进入最后打开的目录,我想要整理它)。但是,删除文件夹后,它仍然出现在文件对话框中。我可以在文件对话框中创建新文件夹,甚至还可以解析不再存在的xml文件。所以现在,在应用程序中我可以看到一个Templates文件夹,从头开始加载XML并将XML文件保存到它,并且应用程序完美运行。如果我在Windows资源管理器中转到该目录,那么Templates目录就不存在了,我也无法打开任何文件(我也尝试使用搜索框和F5,但没有显示)。

知道可能导致这个错误的原因吗?

以下是我要保存/加载这些文件的基本代码:

private void LoadTemplate ( object sender , RoutedEventArgs e )
    {
        OpenFileDialog dialog = new OpenFileDialog ();

        dialog.Filter = "xml files |*.xml";
        dialog.FilterIndex = 2;

        if ( dialog.ShowDialog () == System.Windows.Forms.DialogResult.OK )
        {
            string path = dialog.FileName;

            XmlDocument doc = new XmlDocument ();
            doc.Load ( path );

            if ( doc.DocumentElement != null )
            {
                XmlNodeList nodes = doc.DocumentElement.SelectNodes ( "Folders" ) [ 0 ].ChildNodes;
                List < Folder > _folders = new List < Folder > ();
                int currentLevel = 0;

                foreach ( XmlNode node in nodes )
                {
                    addItemToList ( ref _folders , node , currentLevel );
                }

                folders = _folders;
                DeployHierarchy.ItemsSource = folders;
                DeployHierarchy.Items.Refresh ();
            }
        }
    }

private void SaveTemplate(object sender, RoutedEventArgs e)
    {
        SaveFileDialog savefile1 = new SaveFileDialog();

        savefile1.Filter = "xml files |*.xml";
        savefile1.FilterIndex = 2;

        if (savefile1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            XmlDocument doc = new XmlDocument ();
            XmlElement root = doc.CreateElement ( "Root" );
            XmlElement currentEl = ( XmlElement ) root.AppendChild ( doc.CreateElement ( "Folders" ) );
            doc.AppendChild ( root );

            for (int i = 0; i < folders.Count; i++)
            {
                addElement( ref doc , ref currentEl, ref i, ref currentEl);
            }

            doc.Save ( savefile1.FileName );
        }

    }

1 个答案:

答案 0 :(得分:1)

也许您已在安全限制文件夹中创建了文件夹/文件,并且没有以管理员身份运行WPF应用程序,在这种情况下,物理文件位于C:\Users\<user>\AppData\Local\VirtualStore