2017-11-14 40 views
1

EDIT:主な問題のファイルの名前を変更すると、XAMLコンテンツの名前を変更することであるファイルの名前を変更するときに、XAMLファイルクラスの名前を変更するより良い方法はありますか?

私の直感がこれを行うには良い方法があることを叫んでますが、次の作品をされたときに、私の質問が良いかどうかを確認することですこれを可能にする既存の方法

xamlファイルを読み込み、読み込み/編集して書き出すことができる小さなWPFアプリケーションがあります。 WPFアプリケーションの初期化時に、編集可能なプレースホルダxamlファイルが作成されます。 「StartingXamlFile.xaml」をエクスポートするときにSaveFileDialogを使用し、ユーザーが名前を変更できます。ただし、XAMLファイルの内容はファイル名に応じて変更されません。また、既存のXAMLファイルをインポートするときに、編集とエクスポート(エクスポート時に名前の変更)が同じことが発生します。

ソリューション:

私は、プロパティの内容とパスとファイル名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を使用して作業を行う

保存ファイルのコード::これは仕事をdoesntのGang of four Singleton technique

SAVEFILEコード次に行われるだけでこの質問に受け入れられた答えを与えるために

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 と、ファイルの最初の名前の内容が含まれているシングルトンオブジェクトであるので、あなたがそれをエクスポートするとき は、最初の名前

関連する問題