I am getting XamlParseException when calling XamlReader.Load() in button1_Click(object sender, RoutedEventArgs e) the code below:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data.SqlClient;
using System.Data;
using System.IO;
using HTMLConverter;
using System.Windows.Markup;
namespace StackoverflowTest
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public static SqlConnection conn = new SqlConnection("Server=" + @".\SQLEXPRE" +
";Initial Catalog=Hukuk;" +
"Integrated Security=True;" +
"User ID=;" +
"Password=;");
public MainWindow()
{
InitializeComponent();
try
{
conn.Open();
}
catch (Exception ex)
{
MessageBox.Show("Error opening SQL Server connection\n" + ex.Message);
//Close();
}
}
public static FlowDocument SetRTF(string xamlString)
{
StringReader stringReader = new StringReader(xamlString);
System.Xml.XmlReader xmlReader = System.Xml.XmlReader.Create(stringReader);
return XamlReader.Load(xmlReader) as FlowDocument;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
SqlCommand commProc = new SqlCommand("SELECT Name, Content from Document where ID=3219", MainWindow.conn);
string str;
FlowDocumentReader fdocr = new FlowDocumentReader();
SqlDataReader dr = commProc.ExecuteReader();
try
{
if (dr.Read())
{
byte[] bt = (byte[])dr["Content"];
str = Encoding.Default.GetString(bt);
str = HTMLConverter.HtmlToXamlConverter.ConvertHtmlToXaml(str, true);
fdocr.Document = MainWindow.SetRTF(str);
}
}
catch (Exception ex)
{
MessageBox.Show("An error occured while trying to view document\n" + ex.Message);
}
dr.Close();
dr.Dispose();
}
}
}
Unfortunately a cannot post the xamlstring I'm trying to pass because it is too big..Is there any other way to show it to you?
And the exception details are here:
System.Windows.Markup.XamlParseException occurred
Message='Add value to collection of type 'System.Windows.Documents.TableRowGroupCollection' threw an exception.' Line number '1' and line position '28143'.
Source=PresentationFramework
LineNumber=1
LinePosition=28143
StackTrace:
at System.Windows.Markup.XamlReader.RewrapException(Exception e, IXamlLineInfo lineInfo, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, Boolean skipJournaledProperties, Uri baseUri)
at System.Windows.Markup.XamlReader.Load(XamlReader xamlReader, ParserContext parserContext)
at System.Windows.Markup.XamlReader.Load(XmlReader reader, ParserContext parserContext, XamlParseMode parseMode)
at System.Windows.Markup.XamlReader.Load(XmlReader reader)
at WpfApplication1.MainWindow.SetRTF(String xamlString) in C:\Documents and Settings\nosirovkh\Рабочий стол\посл\WpfApplication1\WpfApplication1\WpfApplication1\MainWindow.xaml.cs:line 69
InnerException: System.ArgumentNullException
Message=Value cannot be null.
Parameter name: item
Source=PresentationFramework
ParamName=item
StackTrace:
at MS.Internal.Documents.TableTextElementCollectionInternal`2.Add(TElementType item)
at MS.Internal.Documents.ContentElementCollection`2.System.Collections.IList.Add(Object value)
at System.Windows.Documents.TableRowGroupCollection.System.Collections.IList.Add(Object value)
at System.Xaml.Schema.XamlTypeInvoker.AddToCollection(Object instance, Object item)
at MS.Internal.Xaml.Runtime.ClrObjectRuntime.Add(Object collection, XamlType collectionType, Object value, XamlType valueXamlType)
InnerException:
…, or something completely different. Try to create a simple application that actually reproduces the issues and post it here.line position 41430.nullinto aTableRowGroupCollection. If you format the XAML with proper indentation and line breaks instead of all on one line (as I assume it is), you should be able to find the specific line that has the problem. If you post the XAML at that point, we should be able to narrow down the problem.