2011-12-22 4 views
1

나는이 페이지의 하단에있는 예를 다음되었습니다AuxiliaryPaneContent의 RibbonGalleryCategory에서 이벤트를 클릭 하시겠습니까?

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

는 "최근 문서"목록을 얻을 수 있습니다. 목록이 채워져 있고이 목록의 항목을 클릭 할 수는 있지만 클릭 이벤트를 잡을 위치를 찾을 수 없습니다.

사용자가이 목록에서 클릭 한 항목과시기를 알아야합니다.

어떻게?

답변

1

두 가지 방법으로 해결할 수 있습니다.

첫 번째 : Ribbon.SelectionChanged 이벤트를 사용하십시오. ListBox SelectionChanged 이벤트도 catch하고 논리를 추가 할 수 있습니다.

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

감사합니다. 올바른 방향으로 안내해 주셔서 감사합니다. 귀하의 RibbonSelectionChanged 이벤트가 나를 위해 작동하지 않았지만 RibbonGalleryItem (ItemsSource 이후) 내에서 리본을 추가 했으므로 RibbonGalleryItem.Selected = "RibbonGalleryItem_Selected"-event를 사용하여 원하는대로 작동했습니다. – Ragowit