2011-12-22 21 views
1

我一直在關注這個頁面底部的例子:單擊AuxiliaryPaneContent內RibbonGalleryCategory中的事件?

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

得到一個「最近的文檔」列表中。我已經填寫了列表,我可以點擊這個列表中的項目,但是我找不到要點擊事件的地方。

我需要知道用戶在此列表中單擊的時間和項目。

怎麼樣?

回答

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事件創建自定義列表框。

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

謝謝,這指出了我正確的方向。您的RibbonSelectionChanged事件對我來說不起作用,但在RibbonGalleryItem中(在ItemsSource之後),我添加了功能區:RibbonGalleryItem.Selected =「RibbonGalleryItem_Selected」-event,而且它的工作方式與我想要的一樣。 – Ragowit 2011-12-23 09:29:52