Событие щелчка в RibbonGalleryCategory внутри вспомогательного содержимого контейнера? - PullRequest
1 голос
/ 22 декабря 2011

Я следовал примеру внизу этой страницы:

http://msdn.microsoft.com/en-us/library/microsoft.windows.controls.ribbon.ribbonapplicationmenu.auxiliarypanecontent.aspx

, чтобы получить список «Самые последние документы».У меня заполнен список, и я могу щелкнуть элементы в этом списке, но не могу найти, где можно отследить событие щелчка.

Мне нужно знать, когда и на каком элементе пользователь щелкнул в этом списке.список.

Как?

1 Ответ

1 голос
/ 22 декабря 2011

Есть два способа решить эту проблему.

Первый: использовать событие Ribbon.SelectionChanged.Он также перехватит ваше событие 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);
    }
}
...