是什么导致WpfXamlLoader.TransformNodes()中的NullReferenceException?

Pat*_*lug 5 wpf xaml xamlparseexception

我试图找出一个仅在发布模式下发生的问题,最有可能是由于某些属性的无效混淆引起的。我知道初始化特定控件时会发生这种情况,但是此控件非常庞大。我花了一天时间浏览所有XAML和绑定,但仍然看不到是什么导致了此异常。

有什么办法获取更多信息。要知道是什么导致了此异常?

Exception : System.NullReferenceException
Message   : Object reference not set to an instance of an object.
Source    : PresentationFramework
Help      : 
Stack     :
   at System.Windows.Markup.WpfXamlLoader.TransformNodes(XamlReader xamlReader, XamlObjectWriter xamlWriter, Boolean onlyLoadOneNode, Boolean skipJournaledProperties, Boolean shouldPassLineNumberInfo, IXamlLineInfo xamlLineInfo, IXamlLineInfoConsumer xamlLineInfoConsumer, XamlContextStack`1 stack, IStyleConnector styleConnector)
   at System.Windows.Markup.WpfXamlLoader.Load(XamlReader xamlReader, IXamlObjectWriterFactory writerFactory, Boolean skipJournaledProperties, Object rootObject, XamlObjectWriterSettings settings, Uri baseUri)
   at System.Windows.Markup.WpfXamlLoader.LoadBaml(XamlReader xamlReader, Boolean skipJournaledProperties, Object rootObject, XamlAccessLevel accessLevel, Uri baseUri)
   at System.Windows.Markup.XamlReader.LoadBaml(Stream stream, ParserContext parserContext, Object parent, Boolean closeStream)
   at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
   at MyClass.InitializeComponent()
Run Code Online (Sandbox Code Playgroud)

Pet*_*lor 6

我不知道获取更详细的异常消息的方法,但它至少可能对其他人了解可能的原因有用。我刚刚跟踪的NullReferenceExceptionWpfXamlLoader.TransformNodes下降到DependencyProperty其与注册DependencyProperty.Register(string,?Type,?Type)。改变中

public static readonly DependencyProperty FooProperty = DependencyProperty.Register(
        nameof(Foo), typeof(object), typeof(Bar));
Run Code Online (Sandbox Code Playgroud)

public static readonly DependencyProperty FooProperty = DependencyProperty.Register(
        nameof(Foo), typeof(object), typeof(Bar), new FrameworkPropertyMetadata(null));
Run Code Online (Sandbox Code Playgroud)

解决了问题。

  • 您是如何在世界上发现它的?你这个家伙 我已经为这个问题解决了几个月,却没有任何原因。 (3认同)

Pat*_*lug 3

似乎不可能获得更详细的异常消息。将有问题的 XAML 分成更小的部分是正确的方法。