オブジェクトのリストにバインドされたデータグリッドがあります。ユーザーは、カーソルがある場所の下に新しい行を追加できます(コードでは、新しいオブジェクトを作成し、リストの適切な位置に挿入します)。
データグリッドに4つの行があると想像してください
カーソルが行番号4にある場合、その行は追加されますが、カーソルが他の行(1、2、または3)のいずれかにある場合、次の例外が発生します。
System.Windows.Markup.XamlParseExceptionが発生しましたMessage="ルート要素がありません。" Source = "PresentationFramework" LineNumber = 0 LinePosition = 0 StackTrace:at System.Windows.Markup.XamlReaderHelper.RethrowAsParseException(String keyString、Int32 lineNumber、Int32 linePosition、Exception innerException)InnerException:System.Xml.XmlException Message="ルート要素がありません。」Source = "System.Xml" LineNumber = 0 LinePosition = 0 SourceUri = "" StackTrace:at System.Xml.XmlTextReaderImpl.Throw(Exception e)at System.Xml.XmlTextReaderImpl.ParseDocumentContent()atSystem.Windows.Markup.XmlCompatibilityReader。 System.Windows.Markup.XamlReaderHelper.Read(XamlNode&でのRead()
注:アプリが最初に読み込まれるときに、最初に行を追加すると(最後の行にあることにより)、他の行から行を追加することもできます。ただし、最初に行番号1、2、3から行を追加しようとすると、失敗します。
どんな助けでも大歓迎です。私は完全に迷子になっています。他の誰かがこれを経験したことはないと思いますが、どこから始めればよいかわからないので、これを引き起こしている原因やデバッグ方法を知っているかもしれません:(
private void OnAddRowBelowCursor(DataGrid datagrid)
{
try
{
int index = datagrid.SelectedIndex;
MyObject newObj = new MyObject();
ObjectList.Insert(index + 1, newObj);
Logging.log.Info("Appended object row below the cursor...");
}
catch (Exception ex)
{
Logging.log.Error("Error appending row below cursor. Reason: " + ex.ToString());
}
}
private void OnAppendRowToBottom()
{
try
{
MyObject newObj = new MyObject();
ObjectList.Add(newObj);
Logging.log.Info("Appended object row to bottom...");
}
catch (Exception ex)
{
Logging.log.Error("Error appending row to the bottom of the table. Reason: " + ex.ToString());
}
}
また、下部に行を追加しても失敗しないことに気づきました
ありがとう