MVVM - 删除记录时关闭选项卡

时间:2010-11-27 01:51:03

标签: wpf user-interface mvvm commandbinding

我真的不确定如何以最好的MVVM方式做到这一点......

基本上,我的主应用程序会打开一个搜索窗口,显示TabPanel中的所有记录。然后,如果双击记录,则会打开包含该记录的新选项卡。现在,我正在尝试保留MVVM,但我不能为我的生活找出当一个人删除记录时如何关闭gui tabitem(为什么如果记录消失则保持打开)。

我现在能够弄清楚如何做到这一点的唯一方法就是将TabItem的实例作为DeleteCommand的参数传递给我,这对我来说似乎是一个很大的禁忌,但我不能为了生命而我想出如何实现这一目标。

2 个答案:

答案 0 :(得分:3)

如果您要在真正的MVVM意义上执行此操作,则双击记录将在后台将记录添加到记录集合中。该记录集合是控件中选项卡的数据源。只需从列表中删除该项(通常是ObservableCollection<T>)就会导致UI更新并删除标签。

您目前使用哪种方法来显示标签?


编辑(回复评论):

那不是“真正的”MVVM。如果选项卡不仅仅是记录也没关系。您应该创建抽象这些细节的视图模型,然后将您的视图模型实例(RecordViewModel,ReportViewModel等)放在一个可观察的集合中并绑定到该模型。使用datatemplates根据当前选项卡绑定的视图模型类型为每个选项卡的内容呈现正确的视图。

答案 1 :(得分:1)

Josh Smith撰写了一篇描述MVVM如何工作的精彩文章。示例应用程序执行的操作与您要执行的操作非常相似。

应用程序显示TabControl,显示一个或多个工作区。工作区区域显示两种不同的项目。标签项是可关闭的。看一看,我相信这会解决你的问题。

WPF Apps With The Model-View-ViewModel Design Pattern