|
// --------------------------------------------------------------------------------------------------------------------
// <copyright file="FlowDocumentExtensions.cs" company="Catel development team">
// Copyright (c) 2008 - 2011 Catel development team. All rights reserved.
// </copyright>
// <summary>
// Extension methods for <see cref="FlowDocument" />.
// </summary>
// --------------------------------------------------------------------------------------------------------------------
using System;
using System.IO;
using System.Windows.Documents;
using System.Windows.Markup;
using Microsoft.Win32;
namespace Catel.Windows.Documents
{
/// <summary>
/// Extension methods for <see cref="FlowDocument"/>.
/// </summary>
public static class FlowDocumentExtensions
{
/// <summary>
/// Clones a <see cref="FlowDocument"/> object.
/// </summary>
/// <param name="flowDocument">FlowDocument to copy.</param>
/// <returns>A copy of the FlowDocument.</returns>
public static FlowDocument CloneFlowDocument(this FlowDocument flowDocument)
{
FlowDocument finalFlowDocument = null;
if (flowDocument == null)
{
return finalFlowDocument;
}
using (Stream stream = new MemoryStream())
{
XamlWriter.Save(flowDocument, stream);
stream.Position = 0;
finalFlowDocument = (FlowDocument)XamlReader.Load(stream);
}
return finalFlowDocument;
}
/// <summary>
/// Saves a <see cref="FlowDocument"/> to a file.
/// </summary>
/// <param name="flowDocument"><see cref="FlowDocument"/> to save.</param>
public static void SaveFlowDocument(this FlowDocument flowDocument)
{
SaveFileDialog saveFile = new SaveFileDialog();
FileStream xamlFile = null;
saveFile.Filter = "FlowDocument Files (*.xaml)|*.xaml|All Files (*.*)|*.*";
if (saveFile.ShowDialog() ?? false)
{
try
{
xamlFile = saveFile.OpenFile() as FileStream;
}
catch (Exception e)
{
String error = "There was an error opening the file:\n\n";
error += saveFile.FileName;
error += "\n\nException details:\n\n";
error += e.Message;
System.Windows.MessageBox.Show(error);
return;
}
if (xamlFile == null)
{
return;
}
XamlWriter.Save(flowDocument, xamlFile);
xamlFile.Close();
}
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.