我是否应该为ObservableCollection中的每个项目创建一个ViewModel

时间:2019-05-16 16:13:19

标签: c# wpf mvvm data-binding revit-api

在WPF中对MVVM相当陌生,我遇到了哪些项目需要其自己的ViewModel的难题。我正在为Autodesk的Revit程序编写一个插件。使用提供的API,我可以深入元素的参数并以一种易于最终用户理解的方式执行工程计算。我在下图中概述了我的方法。

Data Flow Method

该元素是程序中手动选择的模型元素。然后通过从元素中提取参数并将其分配给FPB的属性来创建FPB类的实例。 ViewModel包含一个ObservableCollection,其中包含用户已选择的FPB对象的列表。用户可以使用组合框选择要编辑的FPB。然后,WPF页面显示了用户进行交互以执行其工程计算所需的属性的相应值。

使用WPF的数据绑定,可以在View中更改值,然后在ObservableCollection中的ViewModel的FPB中更改值。为了将这些值写回Revit中的Element,需要在API的ExternalCommand中引发更改,并在事务中确保更改。然后,它执行一个将这些值写回到Revit的方法。

我的问题是,数据需要更新以更新视图中的每个值。该元素正在执行自己的计算,这些计算正在更改数据值。然后,这些更新的值需要一直返回到视图。往返如下所示。

视图-> ViewModel-> ObservableCollection中的FPB-> 更新元素-> ObservableCollection中的FPB-> ViewModel->视图

要遵守MVVM原则,我需要为每个FPB实例创建一个FPBViewModel吗?这会简化数据流吗?还是这只是不必要地使数据流复杂化。如果需要,我可以添加代码片段,但这似乎更多是理论问题,而不是代码细节问题。预先感谢。

0 个答案:

没有答案