如何将File Loaded的内容复制到textBox中

时间:2012-09-27 07:10:23

标签: wpf mvvm textbox openfiledialog

我的.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文件,加载时内容必须放在文本框中。

请帮助!!!

3 个答案:

答案 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);