2017-11-14 2 views
1

편집 : 파일의 이름을 변경하는 XAML 내용파일 이름을 바꿀 때 XAML 파일 클래스의 이름을 바꾸는 더 나은 방법은 무엇입니까?

의 이름을 변경하는 주요 문제

내 직감이 작업을 수행 할 수있는 더 좋은 방법이 있다고 비명하지만, 내 질문이있는 경우가 더 나은 또는 보려면 다음 작품입니다 이 작업을 수행 할 수있는 기존 메서드

xaml 파일을로드하고 가져올 수있는 작은 WPF 응용 프로그램이 있습니다. WPF 응용 프로그램을 초기화 할 때 편집 할 수있는 자리 표시 자 xaml 파일을 만들 때 "StartingXamlFile.xaml"을 내보낼 때 SaveFileDialog을 사용하고 사용자가 이름을 변경할 수 있습니다. 그러나 XAML 파일의 내용은 파일 이름에 따라 변경되지 않습니다. 또한 기존 XAML 파일을 가져올 때 편집 및 내보내기 (내보낼 때 이름 변경) 같은 일이 발생합니다.

해결 방법 : I는 재산 내용과 경로와 파일 이름 XamlFile을 유지하기 위해 Singleton 객체를 설정

. 가져 오기를 수행 할 때 기본값은 "StartingXamlFile"로 설정됩니다. 이것은 다음 완료 Gang of four Singleton technique

나던

SaveFile 값 코드 작업 :

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); 
      } 
+2

File.Copy() File.Delete()를 사용하면 오버 헤드가 거의없이 아주 빨리 도착할 수 있습니다. –

+0

@Sinatr .. 그 내용은 파일 이름 만 바꾸지 않습니다. Xaml 파일은 x : 파일 이름을 참조하는 클래스 값 – JohnChris

+0

@ JohnChris XAML 파일에서 이름을 바꾸는 방법을 묻는 XAML 파일의 이름을 바꾸는 방법을 묻지 않기 때문에 질문 제목을 업데이트 할 수 있습니다. 파일 이름 바꾸기. – Lithium

답변

1

그냥이 질문에에게 허용 대답을주고, 내가하지 않은 이 이외의 더 좋은 방법을 찾았습니다.

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 의 내용과 시작하거나 가져올 때 파일의 초기 이름을 포함하는 단일 객체입니다. 따라서 은 초기 이름에 대한 모든 참조를 바꿉니다.