在我的场景中,我有很多视图(用户控件),其中包含一些过滤器选项。例如,假设总共有 10 个过滤器选项,但并非所有视图都显示所有 10 个过滤器选项。有些只显示 3 个,有些只显示 8 个,等等。重要的是,当在一个视图上设置一个过滤器选项时,包含此过滤器选项的所有视图都应该具有相同的值。
AView: filterOption1, FilterOption2, FilterOption3
BView: filterOption1, FilterOption3, FilterOption5
CView: filterOption2, FilterOption4, FilterOption6, FilterOption7
当用户在 AView 上设置 filterOption1 = True 时,应在所有使用 filterOption1(例如 BView)的视图上设置相同的值。这使我决定拥有一个 CommonViewModel(单例),它将包含公共(共享)数据,并且将公开其中的所有过滤器选项,并且所有视图都应绑定到此 CommonViewModel。
为了显示特定视图的过滤器选项,我可以想到两种方法:
1) 设计一个 CommonView,为每个表示创建新实例,并在不需要的地方隐藏过滤器选项
<DataTemplate DataType="vm:CommonViewModel">
<vw:CommonView ShowFilterOption1="True" ShowFilterOption3="True" />
</DataTemplate>
2)为每个不同的表示设计单独的视图(不同的过滤器选项)
您如何看待这些方法,您更喜欢哪一种,您是否还有其他想法,以及遵循正确的 MVVM 设计的最佳选择是什么?