我在我的项目中使用 Caliburn Micro,我决定使用 Fluent Ribbon 作为 UI 的一部分。我的 ShellView 非常简单,布局如下:
- 带 4 个选项卡的功能区控件。
- 活动项目。
活动项目根据功能区的选定选项卡动态更改。
问题:
将 Ribbon 控件用作我当前活动的 ViewModel (ActiveItem) 的第二个视图的正确方法是什么,同时保持模块化和 CM 本身继承的所有好东西?另外,在我的 ViewModel 之间“共享”我的 Ribbon 控件需要什么?
细节:
我的 ShellViewModel 属于“ Conductor.Collection.OneActive ”类型,它将 ActiveItem 更改为我与选定选项卡关联的特定 ViewModel(触发事件时)。
我的功能区在 XAML 中定义如下:
<ContentControl x:Name="RibbonBar" Micro:View.Model="{Binding ActiveItem}" Micro:View.Context="Ribbon" />
如图所示,功能区控件绑定到当前活动项,因为它是上下文视图。这实际上适用于一个视图,因为由于默认的 CM 约定,它会在子命名空间中查找上下文视图(例如,如果我的视图路径是Views.TasksTabView,它将在Views.TasksTab 中查找上下文视图。丝带)。
问题是,当我更改 ActiveItem 时,由于命名空间不同,无法再定位上下文视图,因此它仅适用于一个选项卡。
我也尝试过编写自己的 ViewLocator 约定,但没有成功。
谢谢你。