私のシナリオでは、その一部としていくつかのフィルターオプションを含む多くのビュー(UserControls)があります。たとえば、合計10個のフィルターオプションがありますが、すべてのビューに10個すべてのフィルターオプションが表示されているわけではないとします。それらのいくつかは3つだけを表示し、いくつかは8などを表示します。重要なことは、1つのビューに1つのフィルターオプションが設定されている場合、このフィルターオプションを含むすべてのビューが同じ値を持つ必要があるということです。
AView: filterOption1, FilterOption2, FilterOption3
BView: filterOption1, FilterOption3, FilterOption5
CView: filterOption2, FilterOption4, FilterOption6, FilterOption7
ユーザーがAViewfilterOption1= Trueを設定する場合、filterOption1を使用するすべてのビュー(BViewなど)に同じ値を設定する必要があります。これにより、共通(共有)データを含み、その中のすべてのフィルターオプションを公開し、すべてのビューをこのCommonViewModelにバインドする1つのCommonViewModel(シングルトン)を使用することにしました。
特定のビューのフィルターオプションを表示するために、2つのアプローチを考えることができます。
1)1つのCommonViewを設計し、表現ごとに新しいインスタンスを作成し、不要な場所でフィルターオプションを非表示にします
<DataTemplate DataType="vm:CommonViewModel">
<vw:CommonView ShowFilterOption1="True" ShowFilterOption3="True" />
</DataTemplate>
2)異なる表現ごとに個別のビューを設計します(異なるフィルターオプション)
これらのアプローチについてどう思いますか、どちらを好みますか、他にいくつかのアイデアがありますか、適切なMVVM設計に従うための最良の選択は何ですか?