私たちのアプリケーションは、多くのモジュールとビューを持つ大きなプロジェクトです。メインウィンドウにはリボンがあり、リボンをアプリケーションに統合する最良の方法を探しています。大きなプロジェクトとMVVMでMicrosoft(または他の)リボンを使用する
ビューに関連するリボンアイテムを追加するためにビューに登録できるモジュールを作成しました。また、メインビューインスタンスはそのインスタンスに関連する独自のリボンアイテムを提供できます。 RibbonItemは、リボンアイテムのオプションを抽象化し、主にタイトル、説明、コマンド、UIType、およびChildItemを持つ小さなクラスです。メインビューが変更されたときにリボンを再構築するサービスが担当します。
私の同僚は、これが悪いMVVMだと思っています。ユーザはリボンビューをXcodeでなくC#コードで設計する必要があります。また、このようにアイテムのグループを無効または有効にすることは難しいでしょうこれらのアイテムの各コマンドはCanExecuteを別々に更新する必要があるため、すぐに使用できます。代わりに、主なリボンビューとViewModelファイルを用意することを提案しました。モジュールやビューのリボンボタンを追加する各開発者は、ViewModelでそれらを追加し、ViewModelに関連するコマンドを追加する必要があります。さらに、VisualStatesは、ViewModelの変更(ビューの変更や選択の変更など)に基づいて表示または有効にするアイテムを決定するために使用されます。私は本当にこのソリューションが気に入らないのは、主にすべての開発者がモジュール知識を一度大きなファイルに入れなければならないからです。
リボン内の一部の項目(オプション、終了など)は、アプリケーション全体に共通しているものもあれば、特定のアプリケーションドメインに関連するものもあれば、特定のビューにのみ関連するものもあります。
編集:私の主な質問は、複数の開発チームが1つのリボンに統合できるようにするにはどうすればよいのでしょうか? 1つのRibbonViewと1つのRibbonViewModelを持っていて、リボン内のすべてのアイテムが含まれている必要があります。各チームはこれらのV/VMにアイテムを追加し、 ?または、すべてのビュー、ビューモデル、またはモジュール登録リボンアイテム(独自のC#コード内)をサービスと照合し、そのタイプに登録されているすべてのアイテムでアクティブビューが変更されたときに、あるいは、この統合を達成するためのより良い方法はありますか?
あなたはどう思いますか? 複数の開発者に共通の単一のリボンリソースを管理する方法について、より良いアイデアや意見がありますか?私はウィルのコメントに同意
おかげで、 splintor
まあ、ViewModelsはリボンについて何も知ってはいけません。リボンに表示されているものと表示されていないものを制御してはいけません。 Viewは、ViewModelの状態変化に応答して、何を表示するかを決定します。 – Will
「リボンをリビルドする」とはどういう意味ですか?異なるビューのリボンが異なる場合は、リボンが1つのみである必要があるため、これは適切な方法ではありません。あなたの同僚は正しいです。そして、私は1人の開発者だけがリボンを交換することを許可します。 – vorrtex
これはタブ付きのアプリケーションで、多くのタブタイプがあります。各タイプには独自のリボンコマンドがあります。リボン内のすべてのアイテムを持つ代わりに、タブの変更が簡単になると、リボンのコンテンツを関連するアイテムで再構築することを考えました。あなたの言うこととは違って、私の同僚は、すべての開発者がリボンアイテムの見た目を知っているので、誰もがメインのリボンファイルで自分の部分を編集すると言います。アプリケーション全体とそのスクリーンに関する知識を中心にする2つの大きなファイルがあるという考えは本当に好きではありません。それは大きなアプリケーションであり、可能な限り分解する必要があります。 – splintor