2010-11-27 47 views
0

我真的不知道如何以最佳方式MVVM做这片...MVVM - 关闭时,一条记录被删除

基本上,我主要的应用程序打开,显示所有记录中搜索窗口一个TabPanel。然后,如果双击一条记录,则会使用该记录打开一个新选项卡。现在,我试图保留MVVM的东西,但是我不能在我的生活中找出当某人删除记录时为什么要关闭gui tabitem(为什么在记录不存在的时候保持打开状态)。

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

回答

3

如果您打算在真正的MVVM意义上这样做,那么双击一条记录会在幕后为记录集合添加一条记录。该记录集合是控件中选项卡的数据源。只需从列表中删除该项目(通常是ObservableCollection<T>)将导致UI更新并移除标签。

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


编辑(响应评论):

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

+0

我只是创建一个TabItem并将其添加到TabCollection。我这样做是因为选项卡不仅仅是记录。可以有一个包含报告(rdlc)的选项卡或包含SearchAllView的选项卡等。 – 2010-11-27 02:17:55

1

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

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

WPF Apps With The Model-View-ViewModel Design Pattern