Load or Save the Content of a RichTextBox

image_pdfimage_print


   
  
<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="WPF" Height="300" Width="300">
    <DockPanel>
        <StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
            <Button Content="_New" Name="btnNew" Click="btnNew_Click" />
            <Button Content="_Open" Name="btnOpen" Click="btnOpen_Click" />
            <Button Content="_Save" Name="btnSave" Click="btnSave_Click" />
        </StackPanel>
        <RichTextBox DockPanel.Dock="Bottom" Name="rtbTextBox1"
                     HorizontalScrollBarVisibility="Visible" 
                     VerticalScrollBarVisibility="Visible">
            <FlowDocument>
                <Paragraph>this is a test</Paragraph>
                <Paragraph>this is a test</Paragraph>
            </FlowDocument>
        </RichTextBox>
    </DockPanel>
</Window>

//File:Window.xaml.cs
using Microsoft.Win32;
using System;
using System.IO;
using System.Windows;
using System.Windows.Documents;
using System.Windows.Markup;    

namespace WpfApplication1
{
    public partial class Window1 : Window
    {
        private String currentFileName = String.Empty;

        public Window1()
        {
            InitializeComponent();
        }

        private void btnOpen_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.FileName = currentFileName;
            dialog.Filter = "XAML Files (*.xaml)|*.xaml";

            if (dialog.ShowDialog() == true)
            {
                currentFileName = dialog.FileName;
                {
                    using (FileStream stream = File.Open(currentFileName, FileMode.Open))
                    {
                        FlowDocument doc = XamlReader.Load(stream) as FlowDocument;
                        if (doc == null)
                        {
                            MessageBox.Show("Could not load document.", Title);
                        }
                        else
                        {
                            rtbTextBox1.Document = doc;
                        }
                    }
                }
            }
        }
        private void btnNew_Click(object sender, RoutedEventArgs e)
        {
            rtbTextBox1.Document = new FlowDocument();
            currentFileName = String.Empty;
        }
        private void btnSave_Click(object sender, RoutedEventArgs e)
        {
            SaveFileDialog dialog = new SaveFileDialog();
            dialog.FileName = currentFileName;
            dialog.Filter = "XAML Files (*.xaml)|*.xaml";
            if (dialog.ShowDialog() == true)
            {
                currentFileName = dialog.FileName;
                using (FileStream stream = File.Open(currentFileName, FileMode.Create))
                {
                    XamlWriter.Save(rtbTextBox1.Document, stream);
                }
            }
        }
    }
}