(XmlReaderの)XamlReader.Loadを呼び出すときのbutton1_Clickで)XamlParseExceptionを取得する(オブジェクト送信者、RoutedEventArgs e)に以下のコード:はXamlReader.Loadを呼び出すときに、私は(XamlParseExceptionを取得しています
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();
}
}
}
残念ながらxamlstringを投稿することができません私はそれが大きすぎるために渡そうとしています。あなたにそれを示す他の方法はありますか?
、例外の詳細はここにある:
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:
あなたのコードは私のための例外をスローしません。あなたの '... 'の中の何か、あるいはまったく違う何かによって引き起こされたものです。実際に問題を再現してここに投稿する単純なアプリケーションを作成してみてください。 – svick
@スヴィック:シンプルなレトロアプリケーションを作成することは、ここに行く方法です。 'line position 41430'というエラーを生成するコードは見たくありません。 –
'TableRowGroupCollection'に' null'を追加しようとしているようです。適切な字下げと改行でXAMLを書式化して、それが1行にあると仮定すると、問題のある特定の行を見つけることができるはずです。その時点でXAMLを投稿すると、問題を絞り込むことができるはずです。 –