XAML中Ninject中的NullReferenceException

XAML中Ninject中的NullReferenceException,xaml,mvvm,ninject,nullreferenceexception,microsoft.extensions.dependencyinjection,Xaml,Mvvm,Ninject,Nullreferenceexception,Microsoft.extensions.dependencyinjection,我刚刚开始为我的MVVM项目使用DI的Ninject(3.2.2.0)。到目前为止,我的实现非常简单——没有接口用于Ninject,只对ViewModel进行DI。当处理主窗口的XAML时,我得到一个NullReferenceException。视图和视图模型的构造函数在NRE之前成功完成。异常发生在App.OnStartup()完成后。以下是App.xaml.cs: namespace PSS { public partial class App : Application {

我刚刚开始为我的MVVM项目使用DI的Ninject(3.2.2.0)。到目前为止,我的实现非常简单——没有接口用于Ninject,只对ViewModel进行DI。当处理主窗口的XAML时,我得到一个
NullReferenceException
。视图和视图模型的构造函数在NRE之前成功完成。异常发生在
App.OnStartup()完成后。以下是App.xaml.cs:

namespace PSS
{
    public partial class App : Application
    {
        private IKernel Container;

        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            Container = new StandardKernel();
            Application.Current.MainWindow = Container.Get<MainWindow>();
            Application.Current.MainWindow.Show();
        }
    }
}

我只是在工作中遇到了同样的问题

当我在研究时,我发现如果我重写
OnStartup
方法,我应该从App.xaml中删除
StartupUri
,这为我解决了这个问题


由于您在启动时也覆盖了
,我相信它也会为您解决这个问题。

我刚刚在

当我在研究时,我发现如果我重写
OnStartup
方法,我应该从App.xaml中删除
StartupUri
,这为我解决了这个问题


由于您在启动时也覆盖了
,我相信它也会为您解决问题。

异常详细信息在哪里?调试,当异常对话框弹出时,单击底部显示“将异常详细信息复制到剪贴板”的链接,并将其粘贴到文件中。警告:如果你拍下对话框的截图并粘贴,我会用一千个太阳的能量复制它。@Will stacktrace addedHmm,这是一个古怪的。我敢打赌你有一个正在旋转的东西在构造函数中抛出异常。所以我要做的是,对于XAML中引用的任何东西,以及这些东西引用的任何东西,我都会详细检查它们的每个构造函数(请注意,只检查您的代码)。这通常足以检测可能发生和未正确处理NRE的地方。如果您无法找到它,请在每个ctor中放置一个断点,并在加载过程中遍历它。1)是否有其他位置,例如您指定要显示的窗口?2) 您可能需要配置ninject以了解如何解析类型。。比如
Container.Bind().ToSelf()
。虽然我认为默认情况下这是不必要的(当类型解析为自身时)。3) 我建议您添加一个
试试。。捕获..
围绕解决方案,并在捕获中添加断点。这将使调试比处理WPF的
NullReferenceException
…@BatteryBackupUnit Ugh total space Cadent move更容易-我忽略了从App.xaml中删除
StartupUri=“View/MainWindow.xaml”
。现在一切正常!例外情况的详细信息在哪里?调试,当异常对话框弹出时,单击底部显示“将异常详细信息复制到剪贴板”的链接,并将其粘贴到文件中。警告:如果你拍下对话框的截图并粘贴,我会用一千个太阳的能量复制它。@Will stacktrace addedHmm,这是一个古怪的。我敢打赌你有一个正在旋转的东西在构造函数中抛出异常。所以我要做的是,对于XAML中引用的任何东西,以及这些东西引用的任何东西,我都会详细检查它们的每个构造函数(请注意,只检查您的代码)。这通常足以检测可能发生和未正确处理NRE的地方。如果您无法找到它,请在每个ctor中放置一个断点,并在加载过程中遍历它。1)是否有其他位置,例如您指定要显示的窗口?2) 您可能需要配置ninject以了解如何解析类型。。比如
Container.Bind().ToSelf()
。虽然我认为默认情况下这是不必要的(当类型解析为自身时)。3) 我建议您添加一个
试试。。捕获..
围绕解决方案,并在捕获中添加断点。这将使调试比处理WPF的
NullReferenceException
…@BatteryBackupUnit Ugh total space Cadent move更容易-我忽略了从App.xaml中删除
StartupUri=“View/MainWindow.xaml”
。现在一切正常!
namespace PSS
{
    public partial class MainWindow : Window
    {
        public MainWindow(MainWindowVM viewModel)
        {
            DataContext = viewModel;
            InitializeComponent();
            Messenger.Default.Register<string>(this, UICommands);
            CMTextBox.Focus();
        }
    }
}
System.NullReferenceException was unhandled
  _HResult=-2147467261
  _message=Object reference not set to an instance of an object.
  HResult=-2147467261
  IsTransient=false
  Message=Object reference not set to an instance of an object.
  Source=mscorlib
  StackTrace:
   at System.DefaultBinder.BindToMethod(BindingFlags bindingAttr, MethodBase[] match, Object[]& args, ParameterModifier[] modifiers, CultureInfo cultureInfo, String[] names, Object& state)
   at MS.Internal.Xaml.Runtime.DynamicMethodRuntime.CreateInstanceWithCtor(Type type, Object[] args)
   at MS.Internal.Xaml.Runtime.ClrObjectRuntime.CreateInstance(XamlType xamlType, Object[] args)
   at System.Xaml.XamlObjectWriter.Logic_CreateAndAssignToParentStart(ObjectWriterContext ctx)
   at System.Xaml.XamlObjectWriter.WriteStartMember(XamlMember property)
   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.LoadBamlStreamWithSyncInfo(Stream stream, ParserContext pc)
   at System.Windows.Application.DoStartup()
   at System.Windows.Application.<.ctor>b__1_0(Object unused)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   at System.Windows.Application.RunDispatcher(Object ignore)
   at System.Windows.Application.RunInternal(Window window)
   at PSS.App.Main() in c:\Users\conrad\VSSolutions\Measurements\PSS\obj\Debug\App.g.cs:line 0
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()