Событие щелчка элемента вкладки Fluent ribbon

#c# #wpf #.net-4.0 #ribbon #fluent-ribbon

#c# #wpf #.net-4.0 #лента #fluent-лента

Вопрос:

Я использую Fluent Ribbon и застрял с этой проблемой. Я добавил несколько элементов вкладки ленты и хотел что-то выполнить, если пользователь нажмет на них

 <Fluent:RibbonTabItem Name="TabItem" MouseLeftButtonDown="TabItem_MouseLeftButtonDown">
    <Fluent:RibbonGroupBox Header="">
        <Fluent:Button/>
        <Fluent:Button/>
    </Fluent:RibbonGroupBox>
    <Fluent:RibbonGroupBox Header="">
        <Fluent:Button Name="General" Header="General" Click="General_Click" />
    </Fluent:RibbonGroupBox>
</Fluent:RibbonTabItem>
  

Это упрощенная часть кода … однако, если я нажимаю на общую кнопку, событие щелчка срабатывает, как и ожидалось, но если я нажимаю на элемент вкладки ленты, ничего не происходит. Здесь представлены оба обработчика событий

  private void TabItem_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        //some code        
    }

 private void General_Click(object sender, RoutedEventArgs e)
    {
        //more code           
    }
  

Кто-нибудь знает, как запустить это событие?

Комментарии:

1. Я собираюсь опубликовать обходной путь на случай, если у кого-то возникнет такая же проблема… Я только что добавил Loaded событие к первой кнопке в групповом окне, поэтому, когда кнопка отображается, выполняется код … как-то грязно, но это работает…

Ответ №1:

Это проще, чем вы думаете: у Ribbon класса есть SelectedTabChanged событие.

Оно запускается дважды при каждом изменении вкладки:

  • в первый раз System.Windows.Controls.SelectionChangedEventArgs содержит старую вкладку в RemovedItems
  • во второй раз он содержит новую вкладку в AddedItems .

Оба эти свойства являются object[] .

Просто найдите его в окне свойств или позвольте IntelliSense найти его для вас 😉

Ответ №2:

Попробуйте событие SelectionChanged на объекте Ribbon.