在AuxiliaryPaneContent内的RibbonGalleryCategory中单击事件?

时间:2011-12-22 08:42:14

标签: .net wpf ribbon mru

我一直在关注本页底部的示例:

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

获取“最新文档”列表。我已填充列表,我可以单击此列表中的项目,但我找不到点击事件的位置。

我需要知道用户在此列表中点击的时间和内容。

如何?

1 个答案:

答案 0 :(得分:1)

有两种方法可以解决它。

首先:使用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,但在这种情况下我认为它是相同的。使用Click事件创建自定义ListBox。

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);
    }
}