【问题标题】:AvalonDock causing crash when a document is closed关闭文档时 AvalonDock 导致崩溃
【发布时间】:2017-01-23 18:01:58
【问题描述】:

我目前面临一个非常奇怪的问题。我在带有 Caliburn.Micro 的 WPF 应用程序上使用 AvalonDock(嵌入在最后一个 WPF Extended Toolkit 3 中)。

在我的 MainView.xml 我有这个 DockingManager:

<xcad:DockingManager x:Name="dockMngr"
                     Grid.Row="1"
                     AllowMixedOrientation="True"
                     DataContext="{Binding DockingManagerVM}"
                     DocumentsSource="{Binding Documents}"
                     AnchorablesSource="{Binding Anchorables}"
                     ActiveContent="{Binding CurrentDocument, Mode=TwoWay}"
                     cal:Message.Attach="[Event DocumentClosed] = [Action DocumentClosed($eventArgs)];
                                         [Event DocumentClosing] = [Action DocumentClosing($eventArgs)]">

DockingManagerVM.cs 的构造函数中,我创建了一些要显示的默认文档:

Documents = new ObservableCollection<GenericDocumentViewModel>();
Documents.Add(new MyDocumentViewModel());
Documents.Add(new MyDocumentViewModel());
Documents.Add(new MyDocumentViewModel());
CurrentDocument = _documents[0];

显然我定义了 MyDocumentViewModel 和要在 XAML 中显示为文档的视图之间的“映射”:

<xcad:DockingManager.Resources>
    <DataTemplate DataType="{x:Type vm:MyDocumentViewModel}" >
        <local:MyDocumentView />
    </DataTemplate>
</xcad:DockingManager.Resources>

由于某种原因,当我尝试关闭之前未激活的文档(通过单击相应的选项卡)时,应用程序崩溃并显示以下消息:

An unhandled exception of type 'System.NullReferenceException' occurred in WindowsBase.dll

Additional information: Object reference not set to an instance of an object.

很遗憾,Visual Studio 没有提供详细信息(如果您知道如何获取它们,那就太好了)。

以下是我尝试重现(或不重现)该问题的步骤:

运行应用程序;有 3 个文档,第一个处于活动状态并显示,然后:

  1. 我通过单击选项卡控件上的“X”关闭第二个或第三个文档;应用程序崩溃
  2. 我打开第二个文档(没有关闭第一个);然后我可以关闭第一个和第二个文档,但如果我尝试关闭最后一个文档(因为我没有打开它),应用程序崩溃
  3. 我关闭第一个文档,然后第二个文档被标记为活动并显示。我关闭这个当前文档,显示第三个文档,我可以关闭这个。 没有崩溃
  4. 我通过点击标签菜单,一一打开所有文档;然后我可以按任意顺序关闭每个文档不会崩溃
  5. 我右键单击选项卡控件并单击“关闭所有文档”(此功能由 AvalonDock 提供):所有文档都关闭没有任何崩溃

如果您发现我正在做的事情有问题,或者是否有任何方法可以调试 AvalonDock 以确定发生了什么,请告诉我?

非常感谢!

【问题讨论】:

    标签: c# wpf avalondock


    【解决方案1】:

    终于找到了解决办法!这似乎是与 AvalonDock 3.0.0 相关的错误(随 Extended.WPF.Toolkit 3.0.0 提供)。

    我从 NuGet 管理器安装了 Xceed.Wpf.AvalonDock(版本 3.2.16567.21060)来解决问题。

    之后,由于我导入了external VS2013 theme,NuGet 自动切换到 Xceed.Wpf.Avalondock 2.9.15603.14400,并且它也可以正常工作。 :)

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 2015-12-09
      • 1970-01-01
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多