1

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

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

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

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

如何?

4

1 回答 1

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);
    }
}
于 2011-12-22T09:49:16.883 回答