我的.xaml中有一个文本框和一个按钮。当我单击按钮时,我可以打开一个filedialog并能够选择该文件。
MainWindow.Xaml:
<TextBox Height="93" IsReadOnly="True" Text="{Binding Path=ReadMessage, Mode=TwoWay}" Name="MessageRead" />
<Button Content="Load" Name="I2CLoadBtn" Command={Binding Path = LoadContentCommand />
我的ViewModel类:
public static RelayCommand LoadContentCommand { get; set; }
private string _ReadMessage;
public string ReadMessage
{
get { return __ReadMessage; }
set
{
__ReadMessage= value;
NotifyPropertyChanged("ReadMessage");
}
}
private void RegisterCommands()
{
LoadContentCommand = new RelayCommand(param => this.ExecuteOpenFileDialog());
}
private void ExecuteOpenFileDialog()
{
var dialog = new OpenFileDialog { InitialDirectory = _defaultPath };
dialog.ShowDialog();
dialog.DefaultExt = ".bin";
dialog.Filter = "Bin Files (*.bin)|*.bin";
}
我基本上想要的是,一旦选择了文件,文件的内容必须保存到文本框中。例如。如果我要加载.txt文件,加载时内容必须放在文本框中。
请帮助!!!
答案 0 :(得分:0)
您可以通过界面执行此操作:
public interface IFileReader
{
string Read(string filePath);
}
public class FileReader : 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();
}
}
然后您可以通过ViewModel的构造函数或属性实例化它:
public ViewModel(IFileReader FileReader) // constructor
{ }
public IFileReader FileReader { get; set; } // property
希望有所帮助
答案 1 :(得分:0)
这是您获取所选路径的方式:
string path = "";
if (dialog .ShowDialog() == true)
{
path = dialog.FileName;
}
using (StreamReader sr = new StreamReader(path))
{
ReadMessage = sr.ReadToEnd()
}
答案 2 :(得分:0)
我喜欢File.ReadAllText的语法来阅读文本文件。
string readText = File.ReadAllText(path);