带有 MVVM 的 AvalonDock,文档关闭不会删除 DocumentsSource 中的项目

AvalonDock with MVVM, document close doesn't remove i tem in the DocumentsSource

我已将 AvalonDock 的 DockingManagerDocumentsSource 绑定到我的 ViewModels 的 ObservableCollection,遵循文章 AvalonDock 2.0 with MVVM

将 ViewModel 添加到我的 collection 打开时正确地将其添加到新选项卡中,但如果我从 [=25= 关闭选项卡,我预计它会从 collection 中删除],事实并非如此:collection 保留其之前的 VM 计数,与打开的选项卡不同步。

如何在选项卡关闭时从 collection 中删除虚拟机?这篇文章只是将 IsClosed 绑定 属性 添加到 ViewModel,但我发现将其从 collection.

中删除更合乎逻辑

DocumentsSource 集合并不是真正的双向绑定,我必须将 DockingManager.DocumentClosed 订阅到一个从集合中删除 ViewModel 的委托:

private void DocumentClosed(object sender, DocumentClosedEventArgs e)
{
    // Get the VM associated with the closed document
    var documentVM = (ViewModel) e.Document.Content;
    var mainVM = (MainViewModel) DataContext;

    // Remove it from the tabs
    mainVM.Tabs.Remove(documentVM );
}