2009-07-02 10 views
9

그래서 wpf listview에 컨텍스트 메뉴 (오른쪽 클릭 메뉴)를 첨부했습니다.wpf listview 오른쪽 클릭 문제

불행히도 마우스 오른쪽 버튼을 클릭하면 메뉴가 모두 나타나며 은 현재 가지고있는 항목이 모두입니다. 상황에 맞는 메뉴를 허용하면서이 마우스 오른쪽 버튼 클릭 동작을 차단하는 방법이 있습니까?

답변

18

키가 올바른 위치에 PreviewMouseRightButtonDown 이벤트를 설정하고 있습니다. ContextMenu가 없어도 ListViewItem을 마우스 오른쪽 버튼으로 클릭해도 해당 항목이 선택되므로 ListView가 아닌 ​​각 항목에 이벤트를 설정해야합니다.

private void OnListViewItemPreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    Trace.WriteLine("Preview MouseRightButtonDown"); 

    e.Handled = true; 
} 

미리보기 이벤트가 tunneling이 선택되는 것을 방지 ListViewItems에서 발생에서 RightMouseButtonDown을 차단하지만, ListView에에 RightMouseButtonDown을 방지하고 그래서 여전히 허용하지 않습니다 때문에

<ListView> 
    <ListView.ItemContainerStyle> 
     <Style TargetType="{x:Type ListViewItem}"> 
      <EventSetter Event="PreviewMouseRightButtonDown" 
         Handler="OnListViewItemPreviewMouseRightButtonDown" /> 
     </Style> 
    </ListView.ItemContainerStyle> 
    <ListView.ContextMenu> 
     <ContextMenu> 
      <MenuItem Header="Menu Item">Item 1</MenuItem> 
      <MenuItem Header="Menu Item">Item 2</MenuItem> 
     </ContextMenu> 
    </ListView.ContextMenu> 
    <ListViewItem>Item</ListViewItem> 
    <ListViewItem>Item</ListViewItem> 
    <ListViewItem>Item</ListViewItem> 
    <ListViewItem>Item</ListViewItem> 
    <ListViewItem>Item</ListViewItem> 
    <ListViewItem>Item</ListViewItem> 
</ListView> 


열려는 ContextMenu입니다.

+0

네이 내가 필요 정확히이다. 그것은 완벽하게 작동합니다. 감사! – KevinDeus