Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 重命名文件时重命名XAML文件类的更好方法?_C#_Wpf_Xaml - Fatal编程技术网

C# 重命名文件时重命名XAML文件类的更好方法?

C# 重命名文件时重命名XAML文件类的更好方法?,c#,wpf,xaml,C#,Wpf,Xaml,编辑:重命名文件时的主要问题是重命名xaml内容 我的直觉告诉我有更好的方法可以做到这一点,但接下来的工作,我的问题是看看是否有更好的或已经存在的方法可以做到这一点 我有一个小的WPF应用程序,可以加载xaml文件并可以导入/编辑和导出。 当WPF应用程序初始化时,它会生成一个占位符xaml文件供您编辑, “StartingXamlFile.xaml”在导出时,我使用了一个SaveFileDialog,用户可以更改名称。但是XAML文件的内容不会根据文件名进行更改。此外,当导入现有XAMLfil

编辑:重命名文件时的主要问题是重命名xaml内容

我的直觉告诉我有更好的方法可以做到这一点,但接下来的工作,我的问题是看看是否有更好的或已经存在的方法可以做到这一点

我有一个小的WPF应用程序,可以加载xaml文件并可以导入/编辑和导出。 当WPF应用程序初始化时,它会生成一个占位符xaml文件供您编辑, “StartingXamlFile.xaml”在导出时,我使用了一个
SaveFileDialog
,用户可以更改名称。但是XAML文件的内容不会根据文件名进行更改。此外,当导入现有XAMLfile,然后编辑和导出(导出时更改名称)时,也会发生相同的情况

解决方案:

我设置了一个单例对象来保存带有属性内容和路径的文件名
XamlFile
。现在,在导入此文件时,默认设置为“StartingXamlFile”。这是按照以下步骤进行的

无法工作的保存文件代码:

 SaveFileDialog dlg = new SaveFileDialog();
            dlg.FileName = "StartingXamlFile"; // Default file name
            dlg.DefaultExt = ".xaml"; // Default file extension
            dlg.Filter = "xaml files (*.xaml)|*.xaml|All files (*.*)|*.*"; // Filter files by extension

            // Show save file dialog box
            var result = dlg.ShowDialog();
            if (result == true)
            {
                File.WriteAllText(dlg.FileName, editedContent);
            }
使用
Replace
保存有效的文件代码:

if (result == true)
            {
                var name = Path.GetFileNameWithoutExtension(dlg.FileName);
                var testing = XamlFile.Content.Replace(XamlFile.Path,name);
                File.WriteAllText(dlg.FileName, testing);
            }

为了给这个问题一个公认的答案,我没有找到更好的方法,除了:

SaveFileDialog dlg = new SaveFileDialog();
            dlg.FileName = "StartingXamlFile"; // Default file name
            dlg.DefaultExt = ".xaml"; // Default file extension
            dlg.Filter = "xaml files (*.xaml)|*.xaml|All files (*.*)|*.*"; 

            // Show save file dialog box
            var result = dlg.ShowDialog();
            if (result == true)
            {
        //X:Class replacement is done here
               var name = Path.GetFileNameWithoutExtension(dlg.FileName);
               var testing = XamlFile.Content.Replace(XamlFile.Path,name); 
               File.WriteAllText(dlg.FileName, testing);
            }
XamlFile是一个包含xaml内容的单例对象 以及启动或导入时文件的初始名称,所以在导出时
替换对初始名称的所有引用。

文件。Copy()
文件。Delete()
将以很小的开销快速到达目的地。@Sinatr。。不重命名内容,只重命名文件名。Xaml文件包含引用该文件的x:Class值name@JohnChris您可能想更新问题的标题,因为您并不是在询问如何重命名XAML文件,而是在询问重命名文件时如何重命名XAML文件中的类。@Lili完成,谢谢:)