带有MVVM的AvalonDock,文档关闭不会删除DocumentsSource中的流程
问题描述:
我已经将我的ViewModels的ObservableCollection的DocumentsSource
绑定到了我的ViewModels的ObservableCollection,后面跟着文章AvalonDock 2.0 with MVVM。带有MVVM的AvalonDock,文档关闭不会删除DocumentsSource中的流程
将ViewModel添加到我的集合可以正确地将它添加到一个新的选项卡中,但是如果我从UI中关闭了选项卡,我期望将它从集合中删除,但事实并非如此:集合保持其以前的计数的虚拟机,与打开的选项卡不同步。
当关闭标签页时,如何将VM从集合中删除?这篇文章只是将一个IsClosed
绑定属性添加到ViewModel,但我会发现更多的逻辑从集合中删除它。
答
的DocumentsSource
收集是不是真的双向约束,我只好到DockingManager.DocumentClosed
订阅委托,从集合中删除视图模型:
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);
}
[WPF的可能的复制 - AvalonDock - 关闭文档](https://*.com/questions/18359818/wpf-avalondock-closing-document) –
@Massimiliano不是真的重复,因为提到的问题是关于崩溃,但它使我转到了DocumentClosed委托解决方案。非常感谢! – CharlesB
不客气。 –