我有两个ListViews
(在不同的视图中)。这些视图绑定到单独的视图模型,但ListViews
包含相同的实体类型。这两个视图都允许用户选择一个项目并导航到它的详细信息/编辑视图。
我需要做什么才能在两个列表视图之间共享这个详细视图?
这是我尝试过的:
将所选项目分配给详细视图的视图模型中的属性
这最初似乎有效,但实际上破坏了 Kendo MVVM。由于该项目位于列表视图的视图模型中,因此将其分配给另一个视图模型中的属性会导致问题。
在每个视图的显示事件中刷新数据
虽然这几乎可行,但它有几个问题。1) 一直获取新数据可能很慢。2) 在详细视图中保存更改并导航回列表视图时,保存是异步的,因此无法保证这些更改在调用 ListView 数据之前已经持久化。这也否定了 MVVM 和 observables 的好处之一。
跨视图共享视图模型
我见过的具有列表和详细视图的示例,两个视图共享一个具有selectedItem
属性的视图模型。这在我的特定情况下是不可能的,因为我有两个导航到同一个详细视图的列表视图 - 更不用说我更喜欢为每个视图有一个单独的视图模型,这样视图模型就不会变得很大混乱。我应该让所有视图共享一个视图模型吗?
我错过了什么?