#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.