Я использую Caliburn Micro для своего проекта, и я решил использовать Fluent Ribbon как часть пользовательского интерфейса.Мой ShellView действительно прост и выглядит следующим образом:
- Управление лентой с 4 вкладками.
- ActiveItem.
Активный элемент динамическиизменяется в зависимости от выбранной вкладки ленты.
Вопрос:
Как правильно использовать элемент управления ленты в качестве второго представления для моей активной в настоящий момент ViewModel (ActiveItem),сохраняя при этом модульность и все положительные качества, которые наследуются самим CM?Кроме того, что потребуется, чтобы «поделиться» моим элементом управления ленты между моими ViewModels?
Подробности:
Мой ShellViewModel имеет тип " Conductor.Collection.OneActive", и он изменяет ActiveItem на конкретную ViewModel, которую я связываю с выбранной вкладкой (при возникновении события).
Моя лента определяется в XAML следующим образом:
<ContentControl x:Name="RibbonBar" Micro:View.Model="{Binding ActiveItem}" Micro:View.Context="Ribbon" />
Как видно, элемент управления ленты привязан к текущему активному элементу как его контекстное представление.Это на самом деле работает для одного представления, потому что из-за соглашений CM по умолчанию, где оно ищет контекстные представления в подпространстве имен (например, если мой путь к представлению равен Views.TasksTabView , он будет искать контекстview в Views.TasksTab.Ribbon ).
Проблема в том, что при изменении ActiveItem контекстное представление больше не может быть расположено из-за другого пространства имен, поэтому оно работает только дляодна вкладка.
Я также пытался написать свое собственное соглашение ViewLocator, но у меня ничего не получилось.
Спасибо.