Несколько представлений с использованием Microsoft.Windows.Controls.Ribbon

У меня есть приложение ленты WPF, использующее Microsoft.Windows.Controls.Ribbon, Я могу установить вид через Grid.Row тег:

    </ribbon:Ribbon>
    <Grid Grid.Row="1">
      <!-- View's content here -->
    </Grid>
  </Grid>
</ribbon:RibbonWindow>

В: Как я могу изменить вид в зависимости от выбранной вкладки ленты?

1 ответ

Решение

У вас есть несколько вариантов.

  1. Крюк SelectionChanged событие и обменять контент вашего представления. Если вы используете Prism, вы можете создать SelectorRegionAdapter сделать это для вас.
  2. Вы можете связать с Ribbon.SelectedValue (настройка SelectedValuePath сказать Label) и предоставить DataTrigger который обрабатывает каждое из имен вашей вкладки.
  3. Вы можете поместить экземпляр каждой модели представления (при условии, что ваш RibbonWindow в контексте данных есть каждая модель представления, которая вам нужна) RibbonTab.Tag свойство, и адаптировать свой взгляд на основе SelectedItem.Tag:

    <r:Ribbon x:Name="PART_Ribbon" ...>
        <r:RibbonTab Tag="{Binding HomeViewModel}" ... />
    </r:Ribbon>
    <Grid>
        <ContentControl Content="{Binding SelectedItem.Tag,
                                          ElementName=PART_Ribbon}" />
    </Grid>
    
Другие вопросы по тегам