プロジェクトに Caliburn Micro を使用しており、UI の一部として Fluent Ribbon を使用することにしました。私の ShellView は非常にシンプルで、次のようにレイアウトされています。
- 4 つのタブを持つリボン コントロール。
- アクティブアイテム。
アクティブなアイテムは、リボンの選択されたタブに応じて動的に変更されます。
質問:
モジュール性と CM 自体に継承されるすべての利点を維持しながら、現在アクティブな ViewModel (ActiveItem) の 2 番目のビューとしてリボン コントロールを使用する適切な方法は何ですか? また、ViewModel 間でリボン コントロールを「共有」するにはどうすればよいでしょうか?
詳細:
私の ShellViewModel は「Conductor.Collection.OneActive」タイプであり、選択したタブに関連付ける特定の ViewModel に ActiveItem を変更します (イベントが発生したとき)。
私のリボンは、次のように XAML で定義されています。
<ContentControl x:Name="RibbonBar" Micro:View.Model="{Binding ActiveItem}" Micro:View.Context="Ribbon" />
示されているように、リボン コントロールはコンテキスト ビューとして現在アクティブなアイテムにバインドされています。これは実際には 1 つのビューで機能します。これは、デフォルトの CM 規則により、サブ名前空間でコンテキスト ビューを検索するためです (たとえば、ビューへのパスがViews.TasksTabViewの場合、Views.TasksTabでコンテキスト ビューを検索します)。リボン)。
問題は、ActiveItem を変更すると、名前空間が異なるため、コンテキスト ビューを見つけることができなくなるため、1 つのタブでしか機能しないことです。
また、独自の ViewLocator 規則を作成しようとしましたが、成功しませんでした。
ありがとうございました。