0

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

基本上,我的主应用程序打开了一个搜索窗口,其中显示了 TabPanel 中的所有记录。然后,如果双击记录,则会使用该记录打开一个新选项卡。现在,我正在尝试保留 MVVM 的内容,但我一生都无法弄清楚当一个人删除记录时如何关闭 gui tabitem(如果记录消失了,为什么要保持打开状态)。

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

4

2 回答 2

3

如果您打算在真正的 MVVM 意义上执行此操作,那么双击记录将在幕后将记录添加到记录集合中。该记录集合是控件中选项卡的数据源。简单地从列表中删除该项目(通常是ObservableCollection<T>)将导致 UI 更新并删除选项卡。

您目前使用哪种方法来显示选项卡?


编辑(回应评论):

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

于 2010-11-27T02:07:01.930 回答
1

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

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

具有模型-视图-视图模型设计模式的 WPF 应用程序

于 2010-11-27T03:17:59.670 回答