带MVVM的AvalonDock,文档关闭不会删除DocumentsSource中的文件

时间:2017-06-19 14:10:25

标签: wpf mvvm avalondock

我已将{AvalonDock的DocumentsSource的{​​{1}}绑定到我的ViewModel的ObservableCollection,后面是文章AvalonDock 2.0 with MVVM

将ViewModel添加到我的集合中会正确地将其添加到新选项卡中,但是如果我从UI关闭选项卡,我希望将其从集合中删除,情况并非如此:集合保留其先前的计数虚拟机与已打开的选项卡不同步。

如何在标签关闭时从集合中删除VM?本文只是将一个DockingManager绑定属性添加到ViewModel中,但我发现将其从集合中删除更合乎逻辑。

1 个答案:

答案 0 :(得分:0)

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 );
}