変なタイトルでごめんなさい。ボタンをクリックしてシステムからテキストファイルをロードし、ファイルの内容を読み取り、テキストファイルの内容をテキストボックスに表示することになっているWPFアプリに取り組んでいます。
私は次のことをしました:
XAMl:
<TextBox Grid.Column="2" Text="{Binding Path=WriteMessage, Mode=TwoWay}" Name="MessageWrite" />
<Button Content="Load" Command="{Binding Path=LoadFileCommand}" Name="button8" />
ViewModelクラス:
// Method gets called when LOAD Button is Clicked
private void ExecuteLoadFileDialog()
{
FileReader mFile = new FileReader(); // Its a Class Which Reads The File
var dialog = new OpenFileDialog { InitialDirectory = _defaultPath };
dialog.ShowDialog();
dialog.DefaultExt = ".txt";
dialog.Filter = "Text Files(*.txt)|*.txt|All(*.*)|*";
string path;
path = dialog.FileName;
using (StreamReader sr = new StreamReader(path))
{
WriteMessage = sr.ReadToEnd();
}
}
ファイルリーダークラス:
class FileReader : I2CViewModel.IFileReader
{
public string Read(string filePath)
{
byte[] fileBytes = File.ReadAllBytes(filePath);
StringBuilder sb = new StringBuilder();
foreach (byte b in fileBytes)
{
sb.Append(Convert.ToString(b, 2).PadLeft(8, '0'));
}
return sb.ToString();
}
}
ここで直面している問題は、ロードボタンをクリックするとファイルダイアログが開きますが、.Txtファイルだけでなくすべてのファイルが表示されることです。.txtファイルのみが表示されるようにするにはどうすればよいですか?
次に、ボタンをクリックするとダイアログがポップアップし、キャンセルボタンをクリックすると、アプリケーションがクラッシュして「空のパス名は無効です」と表示されます。を指しているusing (StreamReader sr = new StreamReader(path))
これらの問題を解決するにはどうすればよいですか?:)