using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Input;
using System.Windows.Media;
using System.ComponentModel;
using System.IO;
using Microsoft.Win32;
using System.Windows.Documents;
namespace WpfApplication1
{
public class EditSomeRichText : Window
{
RichTextBox txtbox;
string strfile = "document files(*.xaml)";
[STAThread]
public static void Main()
{
Application app = new Application();
app.Run(new EditSomeRichText());
}
public EditSomeRichText()
{
Title = "edit some rich text";
txtbox = new RichTextBox();
txtbox.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
Content = txtbox;
txtbox.Focus();
}
protected override void OnPreviewTextInput(TextCompositionEventArgs e)
{
if (e.ControlText.Length > 0 && e.ControlText[0] == '\x0F')
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.CheckFileExists = true;
dlg.Filter = strfile;
if ((bool)dlg.ShowDialog(this))
{
FlowDocument flow = txtbox.Document;
TextRange rang = new TextRange(flow.ContentStart, flow.ContentEnd);
Stream strm = null;
try
{
strm = new FileStream(dlg.FileName, FileMode.Open);
rang.Load(strm, DataFormats.Xaml);
}
catch (Exception exc)
{
MessageBox.Show(exc.Message, Title);
}
finally
{
if (strm != null)
{
strm.Close();
}
}
}
e.Handled = true;
}
if (e.ControlText.Length > 0 && e.ControlText[0] == '\x13')
{
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = strfile;
if ((bool)dlg.ShowDialog(this))
{
FlowDocument flow = txtbox.Document;
TextRange rang = new TextRange(flow.ContentStart, flow.ContentEnd);
Stream strm = null;
try
{
strm = new FileStream(dlg.FileName, FileMode.Create);
rang.Save(strm, DataFormats.Xaml);
}
catch
{
}
finally
{
if (strm != null)
{ strm.Close(); }
}
}
e.Handled = true;
}
base.OnPreviewTextInput(e);
}
}
}