Есть два способа решить эту проблему.
Во-первых: используйте ленту. Выбранное событие. Он также поймает событие ListBox SelectionChanged, и вы сможете добавить к нему свою логику.
private void RibbonSelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.OriginalSource is Ribbon)
{
//implement your logic
}
if (e.OriginalSource is ListBox)
{
//implement your logic
}
}
Во-вторых: я предпочитаю использовать ListView, но я думаю, что это то же самое в этом случае. Создайте свой собственный ListBox с событием Click.
public class RecentItemsList : System.Windows.Controls.ListView
{
public delegate void RecentItemClicked(object param);
public event RecentItemClicked Click;
public RecentItemsList()
{
SelectionChanged += RecentItemsList_SelectionChanged;
SetValue(ScrollViewer.HorizontalScrollBarVisibilityProperty, ScrollBarVisibility.Hidden);
//...
}
private void RecentItemsList_SelectionChanged(object sender, SelectionChangedEventArgs selectionChangedEventArgs)
{
if (SelectedIndex > -1)
{
//...
OnClick();
}
}
private void OnClick()
{
if (Click != null)
Click(null);
}
}
Спасибо, это указывало на меня в правильном направлении. Событие RibbonSelectionChanged не работало для меня, но внутри RibbonGalleryItem (после ItemsSource) я также добавил ленту: RibbonGalleryItem.Selected = «RibbonGalleryItem_Selected» -event, и это сработало так, как я этого хотел. – Ragowit